剑指Offer面试题23 反转链表

题目描述

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

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        if(!pHead) return NULL;
        ListNode *pRevers = NULL;
        ListNode *pNow = pHead;
        ListNode *pBind = NULL;
        
        while(pNow){
            ListNode *pNext = pNow->next;
            if(!pNext){
                pRevers = pNow;
            }
            pNow->next = pBind;
            pBind = pNow;
            pNow = pNext;
        }
        
        return pRevers;
    }
};

注意:

  • 优先保存下一个节点
  • 判断下一个节点是否为空,
  • 反转链表
  • 两个指针后移

你可能感兴趣的:(剑指Offer面试题23 反转链表)