循環・双方向リスト演習問題

演習問題1

(1)循環リストのイメージ図を書こう (教科書を真似る)

(2)循環リストにおいて、データを追加するにはどのようなアルゴリズムが必要になるか?

ヒント:線形リストではどの ように追加したか思い出そう.

演習問題2

(1)双方向リストのイメージ図を書こう(教科書を真似る)

(2) 双方向リストを表現する構造体を書け.

(3)双方向リストにデータを追加するにはどのようなアルゴリズムが必要になるか?

演習問題3

(1)循環・双方向リストのイメージ図を書こう(教科書を真似る)

(2)循環・双方向リストを表現する構造体を書け

(3)循環・双方向リストにデータを追加するにはどのようなアルゴリズムが必要になるか?

演習問題4

循環リストの先頭へ追加された状態(および末尾へ追加された状態)の図をそれぞれ書いてください。(1枚づつでOK)

その状態 になるための、C言語のコードをそれぞれ書いてください。

演習問題5

次のプログラムを改良せよ

dllist.c

#include<stdio.h>
#include<stdlib.h>
/*--- ノード ---*/
typedef struct _team{
  char *name; //球団名 
  struct _team *next; //次の球団の位置
                     //前の球団の位置
}Team;
Team *head,tail; /* 先頭ノードへのポインタ */
Team *now,*new;
void main(){
  //先頭の初期化
   head = NULL;
  new = calloc(1, sizeof(Team));
  new->name="Fighters";
  head =new;
  now= new;
}