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