LeetCode(206) Reverse Linked List
2015-11-03 13:42
246 查看
题目
Reverse a singly linked list.click to show more hints.
Hint:
A linked list can be reversed either iteratively or recursively. Could you implement both?
分析
反转链表。一个简单的解法,既然反转该链表,我们把所有节点作为一个输入序列,按照头插法重新构造一个链表即可,它既是所给链表的反转结果。
题目所给提示还有另外两种方法解决,迭代和递归。
没有想到所说的迭代是个什么意思,下面将给出头插法和递归实现的代码!
AC代码
class Solution { public: //方法一:头插法 ListNode* reverseList(ListNode* head) { if (head == NULL) return head; //反转,即将所有节点按照头插法重新插入一遍即可 ListNode *p = head->next; head->next = NULL; while (p) { //保存p的后续节点 ListNode *r = p->next; p->next = head; head = p; p = r; } return head; } //方法二:递归实现 ListNode* reverseList2(ListNode* head) { if (head == NULL) return head; ListNode *p = head; //反转其余节点组成的链表,将头结点链接到尾部 if (head->next) { head = reverseList(head->next); ListNode *r = head; while (r->next) r = r->next; r->next = p; } p->next = NULL; return head; } };
GitHub测试程序源码
相关文章推荐
- LeetCode--Majority Element
- C++类构造函数初始化列表顺序
- P53 T3
- Fastcgi协议定义解释与说明
- JavaScript 比较和逻辑运算符
- Operating System: Three Easy Pieces --- Concurrent Linked Lists (Note)
- LeetCode(206) Reverse Linked List
- PHP unset()函数销毁变量
- CGBitmapContextCreate函数
- 图片加载问题
- jquery动态创建dom节点
- something about facebook token
- JavaScript 运算符
- JavaScript 函数
- Python超级明星WEB框架Flask
- SQL报错“参数数据类型 text 对于 replace 函数的参数 1 无效”
- IOS开发之 ---- iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)
- Java MD5 加密工具类
- 百度地图SDK 无法load lib库
- AnnotationSessionFactoryBean和LocalSessionFactoryBean