大纲
- 题目
- 地址
- 内容
- 解题
- 代码地址
题目
地址
https://leetcode.com/problems/reverse-linked-list/
内容
Given the head of a singly linked list, reverse the list, and return the reversed list.
Example 1:
Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]
Example 2:
Input: head = [1,2]
Output: [2,1]
Example 3:
Input: head = []
Output: []
Constraints:
- The number of nodes in the list is the range [0, 5000].
- -5000 <= Node.val <= 5000
Follow up: A linked list can be reversed either iteratively or recursively. Could you implement both?
解题
这题就是要将链表反转。
核心点就是要记录被临时斩断联系的相邻两个节点(代码中的cur和next),然后不停向前连接,向后斩断。
struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
};class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* cur = nullptr;ListNode* next = head;while (next != nullptr) {ListNode* temp = next->next;next->next = cur;cur = next;next = temp;}return cur;}
};
代码地址
https://github.com/f304646673/leetcode/blob/main/206-Reverse-Linked-List/cplusplus/src/solution.hpp