数据结构和算法分析算法算法编程

单链表的插入

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.返回插入成功标识。

简单代码实现:

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

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

你爱的在这里都可以找到
上一篇 下一篇

猜你喜欢

热点阅读