《剑指Offer》 反转链表

2019-10-31  本文已影响0人  萨缪

题目描述

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

源代码

class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        ListNode * prev = NULL;
        ListNode * pNext = NULL;
        if (pHead == NULL) {
            return NULL;
        }
        if (pHead->next == NULL) {
            return pHead;
        }
        prev = NULL;
        pNext = pHead;
        ListNode * lastNode = NULL;
        ListNode * pNode = pHead;
        while (pNode != NULL) {
            //保存next指针
            pNext = pNode->next;
            if (pNext == NULL) {
                lastNode = pNode;
            }
            //将该节点的next指向上一个节点
            //第一个head前面没有东西 所以反转后不变 所以第一次prev = NULL是正确的 
            pNode->next = prev;
            prev = pNode;
            //相当于pNode = pNode->next
            pNode = pNext;
        }
        return lastNode;

    }
};
上一篇 下一篇

猜你喜欢

热点阅读