思路
三个工作指针
qsp
q指向插入位置的前趋结点
s指向新开辟的结点
p指向插入的位置
~
源程序与分析
#include< stdio.h>
#include< stdlib.h>
struct slist
;
/*结构体有两个成员,
数据成员data用于储存数据,
指针成员 next用于指向下一个数据,形成链表。*/
typedef struct slist SLIST;
/*typedef说明结构体的新类型SLIST,single list 单向链表。*/
insert snode(SLIST *head,int x,int y)
/*函数名insert snode=insert single node,即插入单向结点。
函数有三个变量,head头结点,x插入位置,y插入结点。*/
/*遍历:插入结点不断后移。*/
s->next=p;
q->next=s;}
/*当链表为空表时(不进入循环):
不存在插入位置x,执行p=head->next时,p为空,不满足循环条件,不会进入循环。执行s->next=p和q->next=s,插在表尾。
当链表非空时(进入循环):
若不存在插入位置x,循环函数while无法查询到x,遍历直到表尾p=='\0',退出循环。执行s->next=p和q->next=s,插在表尾。
若存在插入位置x,循环函数while查到 x,p!='\0'成立。执行s->next=p和q->next=s,插在x结点之前。*/
领取专属 10元无门槛券
私享最新 技术干货