ページ 11

線形リストの逆表示

Posted: 2007年3月03日(土) 02:30
by 生まれ変わった初心者
はじめまして。
よろしくお願いします。

線形リストのCプログラムを完成させる問題です。
プログラム実行後、いくつかの数値の入力していき、線形リストを生成し、リスト作成後、入力された数値を逆順に表示するプログラムをつくらなければなりません。

データ15,33,57,88,-1と5つの数値を入力していくとノードの前にノードを追加する形でリストを生成する。

データが終了したら、リストの先頭からノードをたどって、次のノードを示すポインタがNULLになるまで表示する。
先ほど、入力したデータであれば、88,57,33,15と開業して表示する。

ちなみに、虫食いです。
#include<stdio.h>

struct node{
int key;
struct node *next;
}

main()
{
int n;
struct node *st, *p, *q, *malloc();
st = NULL;
[ ① ]
while([ ② ])
{
q = [ ③ ];
q->next = st;
q->key = n;
[ ④ ];
     [ ⑤ ];
}
p = st;
while([ ⑥ ]);
{
printf("%d \n",p->key);
[ ⑦ ];
}
}

1年前まではc言語習ってたので、出来たんでしょうけど・・・
インターネットで調べてもわかりませんでした・・・
scanfとかも久しぶりに見た気がします・・・。
もちろん、答えを聞くだけでなく、答えを聞いた後は処理の流れを確認し、勉強したいとおもいます。
力を貸してください(・д・;)

Re:線形リストの逆表示

Posted: 2007年3月03日(土) 06:33
by box
> インターネットで調べてもわかりませんでした・・・

1箇所もおわかりになりませんか?

・データの入力(①)
・入力データが所定の条件を満たしている間、繰り返す
   「所定の条件」とは何か?(②)
   何を繰り返すか?
     ノードのための領域の割り当て(③)
     線形リストへの追加(④)
     次のデータの入力(⑤)
・データの出力
   線形リストの先頭から始めて
   ノードがある間(⑥)
     そのノードの値を出力
     次のノードへ進む(⑦)
・おしまい

Re:線形リストの逆表示

Posted: 2007年3月04日(日) 00:21
by 管理人
boxさんのおっしゃる方法で解決されましたでしょうか?

線形リストについてネットで調べてもわからなかったとおっしゃいましたが

http://www.google.co.jp/search?hl=ja&q= ... %83%88&lr=

このように検索するとかなり沢山わかりやすいサイトが出てきますよ。
それでもわからなければ
「C言語 入門」などと検索して入門サイトでわからないところがあれば、戻りながら解説を読んでみるとよりわかりやすいかもしれません。