
/* 連結リストを表示する */
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
} NODE, *Nodep;
void displist(Nodep p);
Nodep firstp; /* 先頭ノードを指すポインタ */
main()
{
/* [1, 5, 9] というリストを作成 */
firstp = (Nodep)malloc(sizeof(NODE));
firstp->data = 1;
firstp->next = (Nodep)malloc(sizeof(NODE));
firstp->next->data = 5;
firstp->next->next = (Nodep)malloc(sizeof(NODE));
firstp->next->next->data = 9;
firstp->next->next->next = NULL;
displist(firstp);
}
void displist(Nodep p)
{
printf("List");
if( p == NULL )
{
printf(" is empty\n");
return;
}
do
{
printf("%5d", p->data );
p = p->next;
} while(p);
printf("\n");
}
/* end of llist1.c */

/* 連結リストを表示する */
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
} NODE, *Nodep;
void displist(Nodep fp);
NODE first; /* 先頭ノードを指すポインタを含むノード */
main()
{
/* [1, 5, 9] というリストを作成 */
first.next = (Nodep)malloc(sizeof(NODE));
first.next->data = 1;
first.next->next = (Nodep)malloc(sizeof(NODE));
first.next->next->data = 5;
first.next->next->next = (Nodep)malloc(sizeof(NODE));
first.next->next->next->data = 9;
first.next->next->next->next = NULL;
displist(&first);
}
void displist(Nodep fp)
{
printf("List");
if( fp->next == NULL )
{
printf(" is empty\n");
return;
}
for( fp = fp->next ; fp != NULL; fp = fp->next )
{
printf("%5d", fp->data );
}
printf("\n");
}
/* end of llist2.c */

/* リストの先頭要素を削除する */
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
} NODE, *Nodep;
void displist(Nodep fp);
void delhead(Nodep fp);
NODE first; /* 先頭ノードを指すポインタを含むノード */
main()
{
/* [1, 5, 9] というリストを作成 */
first.next = (Nodep)malloc(sizeof(NODE));
first.next->data = 1;
first.next->next = (Nodep)malloc(sizeof(NODE));
first.next->next->data = 5;
first.next->next->next = (Nodep)malloc(sizeof(NODE));
first.next->next->next->data = 9;
first.next->next->next->next = NULL;
displist(&first);
delhead(&first);
/* [5, 9] というリストになっているはず */
displist(&first);
}
void displist(Nodep fp)
{
printf("List");
if( fp->next == NULL )
{
printf(" is empty\n");
return;
}
for( fp = fp->next ; fp != NULL; fp = fp->next )
{
printf("%5d", fp->data );
}
printf("\n");
}
void delhead(Nodep fp)
{
Nodep p;
if( p = fp->next )
{
fp->next = fp->next->next;
free(p);
}
}
/* end of llist3.c */