C言語なら、俺に聞け! <10>
■ このスレッドは過去ログ倉庫に格納されています
0601ぽてと=150
NGNGいつも指摘してくれてありがとうございます。
>> Node root={"\0",0, NULL, NULL};
>空の単語も全部これにカウントすることになるが、それは意図的なもの?
>Node *root = NULL;でnodeは要らないはず。
addNode()で返ってきたものを逐一Nodeに再代入して使っているので、
ルートの位置を保存しておく(あとでTraverseNode()で使う)ためにnodeを宣言していました。
だからnodeをなくすとルートの位置が保存できなくなると思うのですが。
>> while ((c=fgetc(fp))!=EOF || j<=MAXWORD){
>charとEOFの比較はうまくいかないし、jがMAXWORDにいっても終らん。
これは…いままでおもいっきり while ((c=getchar())!=EOF) なんていう式を使っていたので
それに倣っていました。でもEOFは0か1を返すのでcharと比較しても大丈夫なような…。
>> ptr[j]=(char *)malloc(sizeof(char)*i); /*単語を格納するための場所確保*/
>> strcpy((char *)*ptr[j], temp); /*確保した場所に単語を格納*/
>ターミネータの分を忘れてる。このptr自体不要だと思うが。
>二分木に貯め込むってのに、別に配列に取っておく必要はないだろう。
ターミネータ('¥0'ですよね?)は忘れていました。
ptrは…。ちょっと理解するのが難しいのでじっくり考えます。ノードのなかにポインタがあるから、
それを使えば他のノードも指せるということですよね。(ptrを使わなくても)
夜中に少しソースを改訂させます。
■ このスレッドは過去ログ倉庫に格納されています