c
1 2#define N 100 /* グラフの点の数を最大100個まで */ 3 4 struct LIST /* リストという構造体の宣言 */ 5{ 6 int v_num; /* 点の番号 */ 7 struct LIST *next; /* 次の構造体を指すポインタ */ 8 }; 9 10 struct LIST *vertex[N+1]; /* LIST型のポインタ配列の宣言 */ 11 12 13 int main(void) 14 15{ 16 struct LIST *tmp; 17 18 int number; int degree; 19 20 scanf("%d",&number); /* 点数の読み込み */ 21 22 for(int i=1;i<=number;i++){ 23 24 vertex[i]=NULL; /* 配列の初期化 */ 25 26 scanf("%d",°ree); /* 各点の次数の読み込み */ 27 28 for(int j=1;j<=degree;j++){ 29 30 tmp=(struct LIST*)malloc(sizeof(struct LIST)); /* 領域の確保 */ 31 32 scanf("%d",&(tmp->v_num)); /* 隣接点の読み込み */ 33 34 tmp->next=vertex[i]; 35 36 vertex[i]=tmp; 37} 38} 39 40}
freeされてないのも気になるんですが、グラフ理論入門という古本です。コード
はあまりのってないんですがリストや樹形図を勉強したいです。見ても頭にはいってこない構文なので
よくわからないです。読むのを手伝ってほしいです。わかるのは、アロー演算子は、アドレス->構造体の中身をみているってことぐらいです。struct LIST *vertex[N+1];からわかりません。
(本に記載されているソースコードの説明と図を後で追記します。)よろしくお願いします。
> 読むのを手伝ってほしいです。
なにすりゃいいですか?
わたしもそれ思いました。明日コメントと図を載せるので、うまくいくか分かりませんが、読解してほしいです。図だけでも、わかりそうなのですが、うまく理解できるかわからないので。できれば1文1文とお願いできると幸いです。まあ明日です。
>できれば1文1文とお願いできると幸いです。
それは「僕の代わりに教本を読んでください」とお願いするに等しくはないですか? (やだよそんなの)
そうですか。それなら受けたことないけど学校の先生みたく一方的に勝手に解釈つけてくれるのはどうでしょうか。とりあえず図をのせます。字は汚いですけど。つながっていくというイメージがわかりません。
struct LIST *vertex[N+1]; /* LIST型のポインタ配列の宣言 */は図でいうv1、v2、v3、v4が101個あるということでよろしいでしょうか。個人的にはstruct LIST *vertex[N]でよい気がしますがなぜN+1なんでしょうか。
struct LIST *tmp;
int number; int degree;
/*scanf("%d",&number); /* 点数の読み込みがわかりません。 */ int degreeは深さ。*/
がわかりません。
tmp=(struct LIST*)malloc(sizeof(struct LIST)); /* 領域の確保 */
scanf("%d",&(tmp->v_num)); /* 隣接点の読み込み */
は新しいメモリを確保してかえってきたアドレスから
scanf("%d",&(tmp->v_num));新しいメモリに新しい番号を入力させている。と思う。
その後の tmp->next=vertex[i];
vertex[i]=tmp;はなんでしょうか。
epistemeさん、kazuma-sさん、丁寧な回答ありがとうございます。とりあえず、即答を避けて保留させてください。2、3日 あけます。忘れたころにコメントすると思います。
まずは、初心者向けのC言語の本を熟読するのが良いのではないでしょうか?
C言語で書かれたプログラムを読むのに必要なC言語の文法の知識が絶望的に不足しているように思われます。
このロシア語の本を読むのを手伝ってほしいんです。ロシア語の事は何も知らないんですけど、、、というような理不尽な要求のたぐいではないですか?
(リストと木構造を理解したいのですが)、それ以前だとすると、(初心者向けだとすると)何をすれば(どんな本を読めば)(変な本にあたると困るため)いいでしょうか。手元で役に立ってるのはcプログラミング、株式会社インフォテックサーブと職業プログラマー入門レッドフォックス株式会社ぐらいですが、リストや木構造は早かったでしょうか。
隣接じゃなくて、普通のリストを選ぶべきでした。しまえるデータがint 型であったので気にいったのですが。あと、ベストアンサーはずすのはどうすればよかったのですか。(ミスしてたら嫌なので)まだ聞きたいです。たしかに、読めても書くのは無理かもしれないです。
回答2件
あなたの回答
tips
プレビュー