先写一个建立单链表的程序
#include <stdio.h>
#include <malloc.h>
int a=5;
typedef struct node/*这里的 typedef 不可少,不然不能使用后面的名称 Lnode*/
{
int data;
struct node *next;}Lnode;
Lnode *creat1(void) /*头插法链表创建,链表中数据顺序于输入顺序相反*/
{ Lnode *h,*p;
h=(Lnode*)malloc(sizeof(Lnode));
h->next=NULL;
scanf("%d",&a);
printf("%d,",a);
while (a)
{
p=(Lnode*)malloc(sizeof(Lnode));
p->data=a;
p->next=h->next;
h->next=p;
scanf("%d",&a);
}
return(h);
}
Lnode *creat2(void)
{
Lnode *h,*p,*t;
h=(Lnode*)malloc(sizeof(Lnode));
h->next=NULL;
scanf("%d",&a);
if(a) /*写算法的时候这个 if 不需要,但是为了能把链表取出来,将*h
进行一步链接是必要的*/
{ p=(Lnode*)malloc(sizeof(Lnode));
p->data=a;
p->next=NULL;
h->next=p ;
t=p;
scanf("%d",&a);
}
while(a)
{
p=(Lnode*)malloc(sizeof(Lnode));
p->data=a;
p->next=NULL;