题目描述
输入一个链表,反转链表后,输出新链表的表头。
源代码
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode * prev = NULL;
ListNode * pNext = NULL;
if (pHead == NULL) {
return NULL;
}
if (pHead->next == NULL) {
return pHead;
}
prev = NULL;
pNext = pHead;
ListNode * lastNode = NULL;
ListNode * pNode = pHead;
while (pNode != NULL) {
//保存next指针
pNext = pNode->next;
if (pNext == NULL) {
lastNode = pNode;
}
//将该节点的next指向上一个节点
//第一个head前面没有东西 所以反转后不变 所以第一次prev = NULL是正确的
pNode->next = prev;
prev = pNode;
//相当于pNode = pNode->next
pNode = pNext;
}
return lastNode;
}
};
网友评论