刷题-力扣-反转链表

Posted 1501106169

tags:

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

反转链表

反转链表

题目描述

描述
输入一个链表,反转链表后,输出新链表的表头。

示例1

输入:
  {1,2,3}
返回值:
  {3,2,1}

题目分析

  1. 使用三个指针front,mid,rear,分别指向前三个结点
  2. mid指向的结点的next指向front指向的结点,再让三个指针在逻辑上向后移动一位

代码

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        if (!pHead || !(pHead->next)) return pHead;
        ListNode* pFront = pHead;
        ListNode* pMid = pHead->next;
        ListNode* pRear = pMid->next;
        pHead->next = nullptr;
        pMid->next = pFront;
        while (pRear) {
            pFront = pMid;
            pMid = pRear;
            pRear = pMid->next;
            pMid->next = pFront;
        }
        return pMid;
    }
};

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

LeetCode刷题 --基础知识篇-- 链表

刷题笔记(链表)-12

java刷题--206反转链表

链表

力扣

剑指offer系列刷题第二篇——从尾到头打印链表和反转链表