206. 反转链表
来自 <https://leetcode.cn/problems/reverse-linked-list/>
/**
* 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:
// 两种解法:
// (1)修改每个结点指针顺序(迭代)
// (2)头插法,就地反转链表
ListNode* reverseList(ListNode* head) {
ListNode* dummy=nullptr; //定义一个空指针
while(head!=nullptr){
ListNode* t=head->next;
head->next=dummy; // 原始的首节点指向空指针
dummy=head; // 更新已经反转的链表的表头指针
head=t;
}
return dummy;
}
};
---头插法
/**
* 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) {
if(head==nullptr || head->next==nullptr){
return head;
}
ListNode* dummy =new ListNode(-1); // 创建一个哑结点
dummy->next=nullptr;
while(head!=nullptr){
ListNode* t=head->next;
head->next=dummy->next;
dummy->next=head;
head=t;
}
return dummy->next;
}
};
标签:dummy,head,ListNode,val,206,反转,nullptr,next,链表
From: https://www.cnblogs.com/mengfengguang/p/16796813.html