单链表的插入

假设我们要实现将节点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.返回插入成功标识。

简单代码实现:


单链表元素插入代码简单实现

由兴趣的朋友可以关注如下公众号找寻资源哦~


你爱的在这里都可以找到
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容