剑指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;
    }
};

注意:

  • 优先保存下一个节点
  • 判断下一个节点是否为空,
  • 反转链表
  • 两个指针后移
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容