链表倒序
来源:互联网 发布:我淘宝主营不超过80 编辑:程序博客网 时间:2024/06/01 07:36
//用递归实现 //很诚实的说盗用了别人的思想,真的太妙了,完全能看出你是否真的体会了递归的原理 //正如那位哥们所说,递归就是一个进栈出栈的过程,链表前面的元素先进栈,在栈底,后面的元素后进栈,在栈顶,先出栈,哈哈。。。 void recursion(node* head) { if(NULL == head) return; if(head->next != NULL) recursion(head->next); //如果把这句放在第二个if前面,那就是从头到尾输出链表,曾经的你或许是用while或者用for循环输出链表,现在你又多了一种方式 cout << head->data << "\t"; }
四种方式实现--从尾到头输出链表
方法一:借用栈倒序输出链表
方法二:先翻转链表,再顺序输出
方法三:递归实现,一个字妙,两个字很妙,三个字太妙了
方法四:用数组实现
方法一:借用栈倒序输出链表
因为栈是先进后出,把链表中的元素存进栈中,链表前面的元素在栈底,后面的元素在栈顶,链表后面的元素先出栈
方法二:先翻转链表,再按顺序打印(主要是想自己实现单链表的翻转,这种实现方式破坏了链表的结构,当然再翻转一下就还原了)
翻转链表的步骤:
1:将当前节点的next节点指向他以前的前一个节点
2:当前节点下移一位
3:如果是最后一个节点,就把它的next节点指向它以前的前一个节点,并推出循环
方法三:用递归实现
很诚实的说盗用了别人的思想,真的太妙了,完全能看出你是否真的体会了递归的原理
正如那位哥们所说,递归就是一个进栈出栈的过程,链表前面的元素先进栈,在栈底,后面的元素后进栈,在栈顶,先出栈,哈哈。。。
方法四:借用数组实现,跟用栈实现的方式差不多, LoveJenny说的实现方式跟这种方式是一样的,空间复杂度都是O(n)
0 0
- 单向链表倒序
- 链表倒序算法
- C链表倒序
- 链表的倒序
- 链表倒序算法
- 链表倒序
- 链表倒序
- 倒序输出链表
- 倒序输出链表
- 关于链表倒序
- 倒序输出链表
- 倒序遍历链表
- 链表倒序输出
- 链表倒序打印
- 链表倒序
- 链表的倒序算法
- c++实现链表倒序
- 递归倒序输出链表
- 模板方法模式
- 爱阅读,经典编程图书分享
- 【端午小练】HDU1846-Brave Game
- javabean, ejb, entitybean的区别,以及POJO的概念
- 每日算法之二十五:Divide Two Integers
- 链表倒序
- linu串口编程入门
- Java多线程与并发库高级应用
- 如果程序中同时出现了typedef和#define,编译器会怎么办?
- Log4Net使用指南
- Android中Intent的匹配规则和注意事项
- Myeclipse导入工程乱码解决办法
- 数据科学工具箱week3笔记
- Lua虚拟机之字节码(三)