[Leetcode] 206. Reverse Linked List 解题报告
来源:互联网 发布:高维数据分析 编辑:程序博客网 时间:2024/05/16 05:06
题目:
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?
思路:
1、递归法:如果头结点为空或者链表中只有一个结点,则属于平凡情况,直接返回。否则首先翻转以head->next为头结点的链表,然后把head接在末尾,并将head的next置为空。
2、迭代法:从前往后扫描链表,每次翻转一下next的指向,直到到达链表末尾。最后别忘了将head的next置为空。
代码:
1、递归法:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { if (head == NULL || head->next == NULL) { return head; } ListNode *new_tail = head->next; ListNode *new_head = reverseList(head->next); new_tail->next = head; head->next = NULL; return new_head; }};
2、迭代法:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { if(head == NULL) { return NULL; } ListNode* pre_node = head; ListNode* crt_node = head->next; while(crt_node != NULL) { ListNode* nxt_node = crt_node->next; // backup crt_node->next = pre_node; pre_node = crt_node; crt_node = nxt_node; } head->next = NULL; return pre_node; }};
阅读全文
0 0
- [leetcode] 206. Reverse Linked List 解题报告
- LeetCode 206. Reverse Linked List 解题报告
- [Leetcode] 206. Reverse Linked List 解题报告
- [LeetCode]Reverse Linked List II, 解题报告
- [LeetCode]Reverse Linked List II解题报告
- 【LeetCode】Reverse Linked List II 解题报告
- LeetCode-Reverse Linked List-解题报告
- [LeetCode] Reverse Linked List II 解题报告
- 【LeetCode】Reverse Linked List 解题报告
- 【LeetCode】206.Reverse Linked List(Easy)解题报告
- Reverse Linked List 解题报告
- [leetcode] 92. Reverse Linked List II 解题报告
- [Leetcode] 92. Reverse Linked List II 解题报告
- Leetcode 92. Reverse Linked List II 翻转链表2 解题报告
- LeetCode — Linked List Cycle 解题报告
- [LeetCode OJ] Linked List Cycle 解题报告
- LeetCode-Palindrome Linked List-解题报告
- 【LeetCode 234】Palindrome Linked List 解题报告.
- JQuery操作简单html组件
- oracle查询问题
- Linux-线程(一)创建 终止 等待线程
- 第四章 SpringMVC--Controller接口控制器详解(5)
- UnityShader案例(五)——法线纹理
- [Leetcode] 206. Reverse Linked List 解题报告
- 多线程系列之创建线程
- 用nginx最代理请求总是 required is not finished yet
- 自定义一个strcmp函数。 函数原型为 strcmo(char *p1,char *p2);
- 2017android面试总结
- js--异步加载
- EditText常用样式和方法小结
- java.lang.ClassCastException: com.bumptech.glide.request.target.SquaringDrawable cannot be cast to a
- 《童话镇》