206链表-反转链表

Posted 孤注一掷 、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了206链表-反转链表相关的知识,希望对你有一定的参考价值。

题目

链接:206. 反转链表 - 力扣(LeetCode)

思路

双指针法

不用定义一个新的链表,只需改变链表中的next指向

定义两个指针

cur指针:指向第一个结点

pre指针:开始是null,之后为cur的前一个结点

用temp指针暂存cur的下一个结点

代码:

/**
 * 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* temp;
        ListNode* cur = head;
        ListNode* pre = NULL;
        while(cur)
            //保存cur的下一个结点
            temp = cur->next;
            //翻转操作
            cur->next = pre;
            //更新pre和cur
            pre = cur;
            cur = temp;
        
        return pre;
    
;

以上是关于206链表-反转链表的主要内容,如果未能解决你的问题,请参考以下文章

[JavaScript 刷题] 链表 - 反转链表, leetcode 206

LeetCode206.反转链表

206链表-反转链表

206链表-反转链表

LeetCode206. 反转链表

[LeetCode] 206. 反转链表