链表反转 (Multi-method)
2016-06-12 18:12
232 查看
链表反转是链表相关问题最基础的知识,做完LeetCode中LinkedList后才会有这种体会,因为ACM算法中不会涉及这一部分。解决这一问题有多种方法,在面试中面试官通常也会要求写出多种。包括stack,iterative,以及recursive。
(1) stack:
a. 按顺序将节点push到stack中,next赋为NULL;
b. 从stack中取节点依次链接。
但是开了额外的空间,来不及多解释了,看下一个吧。
(2) iterative:
a. 创建根节点root;
b. 依次将每个节点链到前一个节点;
c. Notation Plz!!!把第一个节点链到NULL。否则你就等死吧 (双关) (^_^)
但是代码写起来不是很爽,不够美,不海森(>_<)
(3) recursive:
THis's the part I wanna impress readers(^_*)! ps(reader: 没事儿老拽什么英语。 偶: 电影Sherlock第二季第一集,被艾姐的魅力彻底征服。艾姐对卷毛说了一句: impress girl,“秀给姑娘看看”。于是卷毛在心动女神面前破解了“考文垂计划”,征服艾姐。一个字,帅。艾姐实在是把持不住自己的少女心,把手机密码设成"sher",导致…………reder: Stop!!!你还是别再博客园混了,去豆瓣吧。偶: OMG!!!串台了。不好意思。到哪了,哦递归,嘻嘻)。
自己写了个递归,核心代码就两行。对于基础问题,我总认为,代码越简单越好,越简单就越容易被大脑封装,再解决复杂问题时才容易被调用。ps(还记得阿木在头文字D里说过这样一句话: 其实这个世界上本没有神,神也是人,只是大脑里封装了人记不住的方法,也便成了神。神也会犯错的哦…………reader: 我也是醉了,能不能把这哥们封了)。
LinkNode* reverse(LinkNode* x, LinkNoe* &root) { //root是创建的跟节点,head是所给链表的头节点
if (x == NULL) return root;
else return reverse(x->next, root)->next = x;
}
调用方法:
reverse(head, root)->next = NULL;
(1) stack:
a. 按顺序将节点push到stack中,next赋为NULL;
b. 从stack中取节点依次链接。
但是开了额外的空间,来不及多解释了,看下一个吧。
(2) iterative:
a. 创建根节点root;
b. 依次将每个节点链到前一个节点;
c. Notation Plz!!!把第一个节点链到NULL。否则你就等死吧 (双关) (^_^)
但是代码写起来不是很爽,不够美,不海森(>_<)
(3) recursive:
THis's the part I wanna impress readers(^_*)! ps(reader: 没事儿老拽什么英语。 偶: 电影Sherlock第二季第一集,被艾姐的魅力彻底征服。艾姐对卷毛说了一句: impress girl,“秀给姑娘看看”。于是卷毛在心动女神面前破解了“考文垂计划”,征服艾姐。一个字,帅。艾姐实在是把持不住自己的少女心,把手机密码设成"sher",导致…………reder: Stop!!!你还是别再博客园混了,去豆瓣吧。偶: OMG!!!串台了。不好意思。到哪了,哦递归,嘻嘻)。
自己写了个递归,核心代码就两行。对于基础问题,我总认为,代码越简单越好,越简单就越容易被大脑封装,再解决复杂问题时才容易被调用。ps(还记得阿木在头文字D里说过这样一句话: 其实这个世界上本没有神,神也是人,只是大脑里封装了人记不住的方法,也便成了神。神也会犯错的哦…………reader: 我也是醉了,能不能把这哥们封了)。
LinkNode* reverse(LinkNode* x, LinkNoe* &root) { //root是创建的跟节点,head是所给链表的头节点
if (x == NULL) return root;
else return reverse(x->next, root)->next = x;
}
调用方法:
reverse(head, root)->next = NULL;
相关文章推荐
- 构建高效安全的Nginx Web服务器
- 推荐!国外程序员整理的 PHP 资源大全
- CRM安装(二)
- hello
- Java调用本地接口:java.lang.UnsatisfiedLinkError
- Fiddler 常用文档
- 一念永恒 > 第九十一章 疯狂的北岸
- 多线程 2(线程安全与共享资源)
- Can't resolve reference to bean 'dataSource' in parent factory: no parent factory available
- 作为开发者不可不知的Native App,Web App,Hybrid App等技术的对比
- maven 的一些基本操作
- 同样有缓冲区,为什么bufferedReader输入流不需要清空缓冲区?而bufferedWriter需要清空缓冲区呢?
- apache与tomcat负载集群的方法与集群的文件同步问题和图片上传显示问题解决
- mongodb权限设置之添加管理员、普通用户的方法
- React-native开发系列(一)---NavigatorIOS应用
- android 使用TextView/EditText应该注意的地方
- 理解LSTM网络
- 一念永恒 > 第九十二章 公孙婉儿的绝望
- SICP 习题2.17 last-pair 找出表的最后一个值
- 关于mqtt不适合移动聊天消息推送的个人见解