《计算思维与算法入门》 —2.4.4 单向链表的反转

举报
华章计算机 发表于 2019/12/10 14:39:44 2019/12/10
【摘要】 本节书摘来自华章计算机《计算思维与算法入门》一书中第2章,第2.4.4节,作者是赵军 等。

2.4.4  单向链表的反转

了解单向链表节点的删除和添加之后,大家会发现在这种具有方向性的链表结构中增删节点是相当容易的一件事。而要从头到尾输出整个单向链表也不难,但若要反转过来输出单向链表,则需要某些技巧。我们知道单向链表中的节点特性是知道下一个节点的位置,可是却无从得知它的上一个节点的位置。如果要将单向链表反转,就必须使用三个指针变量,如图2-33所示。

 image.png

图2-33  单向链表的反转

在算法invert(X) 中,我们使用了p、q、r三个指针变量,它的运算过程如下:

(1)执行while循环前,如图2-34所示。

 image.png

图2-34  执行while循环前链表和各个指针变量的情况

(2)第一次执行while循环,如图2-35所示。

 image.png

图2-35  第一次执行while循环后链表和各个指针变量的情况

(3)第二次执行while循环,如图3-36所示。

 image.png

图2-36  第二次执行while循环后链表和各个指针变量的情况

当执行到p = NULL时,单向链表就整个反转过来了。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。