このディレクトリの索引 http://toro.2ch.net/test/read.cgi/tech/1364700745/823 # [1] 授業単元: C # [2] 問題文(含コード&リンク): # [3] 環境 # [3.1] 7 # [3.2] gcc # [3.3] C # [4] 期限: 明日まで # [5] その他の制限:a[]など配列は使わない。 # # # # リスト構造で名簿を作っているんですが、標準入力から名前を常に先頭に # 入れるという処理を10回繰り返しても10個とも全部最後に入力した名前に # なってしまいます・・・どうしてでしょうか? # 山田 田中 佐藤 鈴木 村上 # 山本 裏山 田山 小島 島々 # # これだけの名前を先頭から順番に入れて, # printf("%s",P.first->name); # printf("%s",P.first->->next->name); # printf("%s",P.first->->next->next->name); # ・ # ・ # 10個とも島々になってしまいます・・・何故でしょうか? # 一番簡単なリスト構造で先頭に入れるプログラム作っていただきませんか? # ちなみにPはfirstを含む構造体です。firstは構造体NAMEへのポインタで、 # 最初first=NULLです。 name,nextはNAMEのメンバーです。 # 'リスト構造で名簿を作っているんですが、標準入力から名前を常に先頭に入れるという処理を10回繰り返しても10個とも全部最後に入力した名前になってしまいます'(L) :- get_line(Line), 'リスト構造で名簿を作っているんですが、標準入力から名前を常に先頭に入れるという処理を10回繰り返しても10個とも全部最後に入力した名前になってしまいます'([],L). 'リスト構造で名簿を作っているんですが、標準入力から名前を常に先頭に入れるという処理を10回繰り返しても10個とも全部最後に入力した名前になってしまいます'(L,L) :- length(L,10),!. 'リスト構造で名簿を作っているんですが、標準入力から名前を常に先頭に入れるという処理を10回繰り返しても10個とも全部最後に入力した名前になってしまいます'(L1,L) :- get_line(Line), 'リスト構造で名簿を作っているんですが、標準入力から名前を常に先頭に入れるという処理を10回繰り返しても10個とも全部最後に入力した名前になってしまいます'([Line|L1],L).