206.反转链表
题目:反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
核心:双指针
定义两个指针: pre 和 cur ;pre 在前 cur 在后。
每次让 pre 的 next 指向 cur ,实现一次局部反转
局部反转完成之后, pre 和 cur 同时往前移动一个位置
循环上述过程,直至 pre 到达链表尾部
class Solution {
public:
ListNode* reverseList(ListNode* head)
{
ListNode * pre = head;
ListNode * cur = NULL;
while(pre != NULL)
{
ListNode * t = pre->next;
pre->next = cur;
cur = pre;
pre = t;
}
return cur;
}
};