Cで線形リスト

投稿者: | 2017年11月14日

C言語で線形リスト書けっていう課題が出たので、絶対忘れるので備忘録。
C++なら双方向リストクラスがあるんですがね・・・。
[blogcard url=”http://vivi.dyndns.org/tech/cpp/list.html”]
Cで書けという制約があるので、書いていきましょう。
参考にさせていただいたサイトはこちら・・・というか、実装は変数とか関数名が違うだけでほとんど一緒です。
[blogcard url=”http://www5c.biglobe.ne.jp/~ecb/c/14_04_02.html#getheadposition”]
自分が書いたコードは、課題用にちょっとだけ変わってます。
[cpp]
#include <stdio.h>
#include <stdlib.h>
struct num{
int number;
struct num next;
};
struct num *pstart,
pend;
struct num p;
void addnode(struct num newlist) {
struct num *p;
p=(struct num
)malloc(sizeof(struct num));
if(pend){
pend->next = p;
}else{
pstart = p;
}
pend=p;
pend=newlist;
pend->next = NULL;
};
struct num getnext(){
struct num ret;
ret.number=0;
if(p){
ret=
p;
p=p->next;
}
ret.next=NULL;
return ret;
}
int main(int argc, char const *argv[]) {
struct num data;
int i;
for(i=1;i<=13;i=i+2){
data.number = i;
addnode(data);
} p=pstart;
do{
data=getnext();
  if(data.number){
    printf("%d\n",data.number);
    }
  }while(data.number);
  while(p!=NULL){
   p=pstart->next;
 free(pstart);
  pstart=p;
}
return 0;
}
[/cpp]
ただの備忘録なので説明は省略。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください