• 締切済み

線形リスト

こんにちわ。今、大学で線形リストの勉強してるのですがよくわかりません。 ↓のプログラムで (1)10個のIDを受け取って受け取った順にリストを作るプログラム(各要素の値のアドレスとそのnextの値を表示してリストになっていることを確認する。) (2) (1)のプログラムを拡張して、リストを作ったあと、1から10までの間の整数nを入力として受け取り、リストのn番目の要素のIDを表示プログラムを書け。 の2つのことをしたいんですけど、どのようにすればいいのですか?どなたか回答おねがいします。 #include<stdio.h> #include<stdlib.h> struct list{ int ID; struct list *next; }; int main(int argc, char* argv[]) { struct list *top; top=(struct list *)malloc(sizeof(struct list)); //struct list 型の大きさの領域を1つ確保 //topがそこを指している状態にする //printf("IDを10個入力してください"); if(top == NULL){ //メモリが足りないと値がNULLになってします printf("メモリは確保できません\n"); exit(1); //強制終了。プログラムはココで終わってしまいます } top->next=NULL; top->ID=1; //ポインタtopが指している構造体のIDの値を変えている top->next=(struct list*)malloc(sizeof(struct list)); //もう1つ作ります //top->next==NULL (メモリ確保に失敗)の処理は省略 (top->next)->next=NULL; (top->next)->ID=5; //これで下図のような状態になります; return 0; }

みんなの回答

  • yukimican
  • ベストアンサー率70% (112/159)
回答No.2

一応、簡単な流れだけのせておきます。 No.1さんも書かれていますが、 こういうものはなるべく自力でやらないと身に付きません。 工学/情報系の学部なら、この程度はできるようにならないと (今楽しようとしてると)後々で苦労しますよ、と言っておきます。 --------------------------------- 準備: struct list *top = NULL; struct list *item = top; ループ(1から10まで)  ・item->ID = (整数値取得)  ・item->next = (メモリ確保)  ・次のitemへ item->nextをfree、NULLをセット --------------------------------- (1) item=top; ループ(itemがNULLになるまで)  ・printfでitemのメンバ表示  ・次のitemへ --------------------------------- (2) 整数値取得→n item=top; ループ(itemがNULLになるまで)  ・n番目ならID表示  ・次のitemへ --------------------------------- 後始末: item=top; ループ(itemがNULLになるまで)  ・itemのメモリ解放  ・次のitemへ ※注意

回答No.1

大学の宿題は自分で解いてください 解いている間に分からない部分が出てきたときに質問をしてください

参考URL:
http://www.kumei.ne.jp/c_lang/

関連するQ&A

専門家に質問してみよう