Evelyn
QQ:1809335179
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
ListNode* ReverseList(ListNode* pHead) {
if (pHead == NULL)
return 0;
ListNode *pre, *Next;
pre = pHead;
pHead = pHead->next;
pre->next = NULL; //要把头节点的下一节点置为空
while (pHead) {
Next = pHead->next; //先对下一节点进行保存
pHead->next = pre;//再将当前节点反转
pre = pHead; //反转后,当前节点的下一节点为当前节点
pHead = Next; //遍历下一个节点
}
return pre; /*注意这里是返回保存下来的当前结点,也就是最后一个节点,
反转后的头节点,而不是pHead节点,因为此时pHead节点已为空*/
}