问题描述:
Reverse a singly linked list.
单链表反转。
AC代码:
ListNode* reverseList(ListNode* head)
{
ListNode *reverseHead = NULL;
ListNode *pre = NULL;
ListNode *cur = head;
ListNode *pNext = NULL;
while(cur != NULL)
{
pNext = cur->next;
if(pNext == NULL)
reverseHead = cur;
cur->next = pre;
pre = cur;
cur = pNext;
}
//return cur;
return reverseHead;
}
需要注意的是需要返回翻转后的链表的头节点,开始的时候我是返回的cur,后来发现每每次返回的翻转结果都是null,定义一个reverseHead,
当cur->next == NULL 的时候 cur就是当前链表的最后一个节点,也即翻转链表的头节点。当然,返回pre指针也是可以的。