链表的逆置

方法:使用p和q两个指针配合,使得两个节点的指向反向。
链表的逆置_第1张图片
链表的逆置_第2张图片
链表的逆置_第3张图片
链表的逆置_第4张图片
链表的逆置_第5张图片
链表的逆置_第6张图片
再循环p=q;q=r;r=q->next;
代码如下:

class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        if(pHead==NULL||pHead->next==NULL)
            return pHead;
        ListNode* p=NULL;
        ListNode* q=NULL;
        ListNode* r=NULL;
        p=pHead;
        q=pHead->next;
        pHead->next=NULL;
        while(q)
        {
            r=q->next;
            q->next=p;
            p=q;
            q=r;
        }
        pHead=p;
        return pHead;
        
    }
};

你可能感兴趣的:(链表的逆置)