#include "stdio.h"
#include "stdlib.h"
typedef struct List
{
int data;
struct List *next; //指针域
}List;
void HeadCreatList (List *L) //头插法建立链表
{
List *s;
L->next=NULL; //先建立一个带头结点的单链表
for (int i=0;i<10;i++)
{
s=(struct List*)malloc(sizeof(struct List)); //生成新结点
s->data=i;
s->next=L->next; //将L指向的地址赋值给S;
L->next=s; //插入到表头
}
}
void TailCreatList(List *L) //尾插法建立链表
{
List *s,*r;
r=L; //r为指向尾部的结点
for (int i=0;i<10;i++)
{
s=(struct List*)malloc(sizeof(struct List)); //生成新结点
s->data=i;
r->next=s; //将表尾终端结点的指针指向新结点
r=s; //将当前的新结点定义为表尾的终端结点
}
r->next=NULL; //表示当前链表结束
}
void DisPlay(List *L)
{
List *p=L->next;
while(p!=NULL)
{
printf ("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main ()
{
List *L1,*L2;
L1=(struct List*)malloc(sizeof(struct List));
L2=(struct List*)malloc(sizeof(struct List));
HeadCreatList(L1);
DisPlay(L1);
TailCreatList(L2);
DisPlay(L2);
}