K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>レス頂き、ありがとうございました。 >そんで、(ぱ)さんに、甘えた質問さしていただきます。 >ソースなんで長いですが自分でリストを理解しようと改造した線形リストです。 >typedef struct list { > int num; > struct list *next; >}list; >int main() { > list sta ={0,NULL}; > list *start = &sta; /*先頭*/ > list *sagyou; /*作業領域*/ > list *fo; /*for用*/ > char str[16]; /*入力用*/ > > while(1) { > printf("整数を入力(Eで終了)-->"); > gets(str); > if(strcmp(str,"E") != 0){//strcmpは文字列の比較 > sagyou = (list *)malloc(sizeof(list)); > if(sagyou == NULL ){ > printf("メモリ確保できず\n"); > exit(1); > } > } > else break; > > sagyou->num = atoi(str);//atoiは文字列をint型に変換する > > for(fo = start; fo->next != NULL; fo = fo->next){ > if(sagyou->num < fo->next->num ){ > sagyou->next = fo->next; > fo->next = sagyou; > break; > } > } > if(fo->next == NULL){ > fo->next = sagyou; > sagyou->next = NULL; > } > } >で、上のリストで、数字を大きい順にしようとするとき >for(fo = start; fo->next != NULL; fo = fo->next){ > if(sagyou->num < fo->next->num ) >の、fo->next->numは、その時点でのfoのnext側のnumを見てる >と捉えて良いのでしょうか。ついで、malloc()で得たメモリは >どこでfree()というやつで解放してやれば良いのでしょうか。 >線形リスト、双方向リスト等、及び二分木探索などの例ばかりが >載ってる書籍を探しても、あるのは入門書ばかりで、初心者 >から脱皮できない自分に負い目を感じる今日このごろです。 >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!