プログラミング例(一部であり連続していない)
struct node {
   double data;
   int next;
};
struct node[100];  /* 100 個分のデータ場所の確保 */
int root;          /* 最初の要素を指す */
int new;           /* 未使用の要素を指す */
int p, q;
double x;

root=-1;           /* 「根元」 -1 は「何も指していない」
                             ことを表すものとする      */

new=0;
/* 根元にデータ x を挿入する */
p=new;   new=new+1;
/* 実際にはnew が100 以上にならないようチェックが必要 */
node[p].data=x;
node[p].next=root;
root=p;

/* 根元のデータを削除する */
p=node[root].next;
root=p;

/* 要素 q の次にデータ x を挿入する */
p=new;   new=new+1; 
/* 実際にはnew が100 以上にならないようチェックが必要 */
node[p].data=x;
node[p].next=node[q].next;
node[q].next=p;

/* 要素 q の次の要素を削除する */
p=node[q].next;
node[q].next=node[p].next;
/* 実際には次の要素があるかどうかチェックが必要 */

/* リストのデータをたどって順に表示する */
p=root;
while( p != -1 ){
  printf("%g\n", node[p].data );
  p=node[p].next;
}
/* i 番目のデータを取り出す */
p=root;
j=0;
while( p!=-1 ){
  if( j==i )break;
  p=node[p].next;
  j++;
}
if( p!=-1 ){ /* ここでi番目のデータがないとき p==-1 となる */
  x=node[p].data;
}

/*
   これらの例では、一度削除した要素は、
   二度と使われないので、実際のデータ数
   が 100 より少なくても記憶場所がいずれ
   なくなってしまう。
   単純に new=new+1 ではなく使用・不使用
   を調べて有効に使う方がよい。
   →ガベージコレクション
     Garbage Collection
     =ゴミ集め
*/
戻る