回答編集履歴

1 一部訂正

argius

argius score 9518

2015/10/22 23:07  投稿

作成したノードが残るようにしないといけません。
まず、ループに入る前に、空のリストを作成しておきます。
`Structure`関数を呼び出すときに、空のリストの先頭のノードを渡します。
宣言はこのようになります。
`int Structure(MojiR start, char *mojiyoko, int no);`
`int Structure(MojiR *start, char *mojiyoko, int no);`
ローカル変数の`MojiR *start`を引数に持ってくる感じですね。
ループでなく1回ごとに呼ぶとしたらこんな感じです。  
何度も`m`の下にどんどんつながっていきます。  
```lang-c  
int main()  
{  
   struct mojiR m = { "", 0, NULL };  
 
   Structure(&m, "word", 1);  
   Structure(&m, "rule", 2);  
 
   printf("1=%s, 2=%sn", m.next->mojiyoko, m.next->next->mojiyoko);  
   // 1=word, 2=rule  
 
   return 0;  
}  
```  
> どうやって自己参照構造体は順番を管理するのかも知りたいです。
> (2次元配列では何行目と指定できたので…)
単方向リンクリストは、配列のようにランダムアクセスはできない構造です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る