15. 反转链表

题目:输入一个链表,反转链表后,输出新链表的表头

思路:定义三个指针,pPrev,pNode,pNext,pNode为当前结点,pPrev为前一结点,pNext为后一结点;反转链表就是要将pNode->next = pNext变为pNode->next=pPrev。

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

猜你喜欢

转载自blog.csdn.net/weixin_39605679/article/details/80892991