反转思想
先定义一个cur指针,指向头节点;定义一个pre指针,指向nullptr;
// 临时保存
tmp = cur->next;
// 交换
cur->next = pre;
// 更新pre、cur
pre = cur;
cur = tmp;
LeetCode206. 反转链表
题目描述:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 :
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
C++代码
/**
* Definition for singly-linked list.
* 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* tmp;
ListNode* cur = head;
ListNode* pre = nullptr;
while (cur) {
tmp = cur->next;
cur->next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
};
该文章介绍了如何使用C++编程语言实现LeetCode第206题的解决方案,即反转给定的单链表。通过定义当前节点`cur`、前一个节点`pre`以及一个临时变量`tmp`,逐步迭代链表并交换节点的指向,从而达到反转链表的目的。
713

被折叠的 条评论
为什么被折叠?



