一、尾插法
Linklist List_TailInsert(Linklist &L){ //正向建立单链表
int x; //设Elemtype为整型
L=(Linklist)(malloc(sizeof(LNode)); //建立头结点,初始化空表
LNode *s,*r=L; //r为尾指针
scanf("%d",&x); //输入结点的值
while(x!=9999){ //当输入到9999结束
s=(LNode *)(malloc(sizeof(LNode)); //以下三句代码实现在r结点之后插入元素x的功能
s->data=x;
r->next=s;
r=s; //r指向新的表尾结点,保持r指向最后一个结点
scanf("%d",&x);
}
r->next=NULL;
}
二、头插法
即对头结点进行后插操作
Linklist List_HeadInsert(Linklist &L){ //逆向建立单链表
LNode *s;
int x;
L=(Linklist)(malloc(sizeof(LNode)); //创建头结点
L->next=NULL; //初始化单链表
scanf("%d",&x);
while(x!=9999){
s=(LNode*)malloc(sizeof(LNode)); //创建新结点
s->data=x;
s->next=L->next;
L->next=s; //将新结点插入表中,L为头指针
scanf("%d",&x);
}
return L;
}
总结
- 头插法和尾插法核心是初始化操作,指定节点的后插操作(后者需要设置一个指向尾结点的指针)
- 头插法的重要应用:链表的逆置