剑指offer-15-反转链表

2018-08-07  本文已影响0人  Buyun0

反转链表:

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

思路:三指针abc一次排列,每次都将b指向a,然后各推进一步,直到到达NULL节点。

/*
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 *a,*b,*c;
        a = pHead;
        b = pHead->next;
        if(b->next == NULL){
            b->next = a;
            a->next = NULL;
            return b;
        }
        c = b->next;
        a->next = NULL;
        while(true){
            b->next = a;
            a = b;
            b = c;
            if(c->next == NULL){
                c->next = a;
                return c;
            }
            c = c->next;
        }
    }
};
上一篇 下一篇

猜你喜欢

热点阅读