单链表的插入
2019-11-17 本文已影响0人
编程微享
假设我们要实现将节点s插入到节点p、p->next之间,应该如何实现呢?
下面我们先看一张简单的图:
p、s、p->next之间逻辑关系图通过思考我们发现只需要做一点改变即可:
s->next = p->next ;
p->next = s;
是不是很简单,这样p、p->next、s之间的关系逻辑图就变成了下图:
分析之后三者之间的关系逻辑图有人会问,s->next = p->next ;p->next = s;
这两句可以交换一下吗?
我们先不急着说结论,但分析一下如果交换的后,会发生什么结果呢。
如果先执行p->next = s;再执行s->next = p->next;
就会变成s->next = s; 这样整个流程就成了一个死循环。
下面我总结一下单链表第i个数据插入结点的算法思路:
1.声明一个结点p指向链表头结点,初始化j从1开始;
2.当j<1时,就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加1;
3.如果链表结尾p为空,则说明第i个元素不存在;
4.否则查找成功,在系统中生成一个空节点s;
5.将数据元素e赋值给s->data;
6.执行插入标准语句:s->next = p->next ;p->next = s;
7.返回插入成功标识。
简单代码实现:
单链表元素插入代码简单实现由兴趣的朋友可以关注如下公众号找寻资源哦~
你爱的在这里都可以找到