反转链表

题目描述

输入一个链表,反转链表后,输出链表的所有元素。

分析:应当设置三个指针,一个指向前驱元素,一个指向后继元素,另外一个保留后继的下一个元素,使得链表指向可以继续向后移动。

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

 

posted on 2018-03-29 21:21  爱思考的猫  阅读(119)  评论(0编辑  收藏  举报

导航