1.单链表结构体的定义:
typedef struct Lnode
{
int data;//数据域
struct Lnode* next; //指针域
}Lnode,*LinkList; //指向Lnode类型的指针 LinkList
2.不带头结点的建立算法(头插法)
LinkList Creat_LinkList()
{
int x;
LinkList L=NULL; //定义一个头指针,并指向空
LNode* s; //定义一个指针变量s
scanf("%d",&x); //键盘输入要插入的数据
while(x!=stop) //当键盘输入stop时结束输入
{
s=malloc(sizeof(LNode)); //为新插入的结点s申请一块内存空间
s->data=x; //将键盘接收的数据x赋给s结点的数据域
s->next=L; //让s的后继指向头指针L
L=s; //让头指针指向s,保证L始终指向表头
scanf("%d",&x); //继续循环接收数据x
}
return L; //将建立好的单链表返回到主函数
}
3.带头结点的建立算法(头插法)
LinkList Creat_LinkList()
{
int x;
LinkList L; //定义一个头指针L
LNode* s; //定义一个指针变量s
L=(LinkList)malloc(sizeof(Lnode));//为头结点分配内存空间 将其地址返回给L
L->next=NULL; //头结点next域指向空 代表无首元结点,为空表
s=L; //指针变量s指向头结点L
scanf("%d",&x); //键盘输入要插入的数据
while(x!=stop) //当键盘输入stop时结束输入
{
s->next = malloc(sizeof(LNode)); //为新插入的结点s申请一块内存空间
s->next->data=x; //将键盘接收的数据x赋给s的后继的数据域
s=s->next; //让s指向s的后继
scanf("%d",&x); //继续循环接收数据x
}
return L; //将建立好的单链表返回到主函数
}
4.单链表的建立算法(尾插法)
LinkList Creat_LinkList()
{
int x;
LinkList