C++中经典的单向链表反转
来源:互联网 发布:装修效果图制作软件 编辑:程序博客网 时间:2024/06/05 11:02
其中比较难理解的是linka*& head,传入的其实就是linka *的类型就可以了,linka *是表示linka类型的指针,&表示head的地址,也就是linka的指针
另外需要熟悉的是head->next,其实有点像C#中的head.Next,就是structure中的一个属性.
首先定义3个指针,分别是前中后,然后当中间那个指针非空,就是当前不是空,就做循环里的事情
注意的是这个算法里面next是在循环里面赋值的
每次循环都把current指向previous了,然后大家都往后移一个,next=current->next必须在current改变方向之前做,否则改变了方向之后current的next就变成previous了。
最后跳出循环之后,将header的next首先置空,因为head变成了最后一个node了。然后head就变成了previous,因为当时current和next都为NULL了,只有previous为最后一个节点(或者说这时候应该是第一个非空节点,也就是head)
终于把整个算法理解了一遍,最后想想其实挺简单,但是能用c++写出来也不太容易,特别是在面试的时候。
再增加一个递归的单链表反转的方法:
- C++中经典的单向链表反转
- C 单向链表反转
- 单向链表的反转
- 单向链表的反转
- 单向链表的反转
- 单向链表的反转
- 单向链表的反转
- 单向链表的反转
- 单向链表的反转
- C递归实现单向链表的反转
- C递归实现单向链表的反转
- C递归实现单向链表的反转
- C递归实现单向链表的反转
- C语言实现单向链表的反转
- 单向链表反转
- 反转单向链表
- 单向链表反转
- 单向链表反转
- 在ubuntu下安装arm920t-eabi-4.1.2
- A belated enlightment on [Lacawell06JGT]
- vsftpd继续使用
- 向着第二层 第一阶段第十九天
- Linux下IE6安装注意事项
- C++中经典的单向链表反转
- vb访问oracle的链接
- Unix环境高级编程 源代码地址
- 第12篇 tinyviz和TOSSIM深入研究——最大节点数(网络的大小)
- 第13篇 Tython (教程lesson 5)
- 第14篇 .在PC上显示数据 (教程lesson 6)
- 【转载】解析Caliburn.Micro(一)
- Android下uninstall failure
- Windows 下python开发环境搭建-Python sqlalchemy mysql-python wingIDE