要求反转一个单链表,例如:
输入:1->2->3->4->5->NULL
输出:5->4->3->2->1->NULL
方法一、双指针
● 定义两个指针:pre和cur,pre在前面,cur在后面。
● 每次让pre的next指向cur,实现一次局部反转。
● 局部反转完成之后,pre和cur同时往前移动一个位置。
● 循环上述过程,直至到达链表尾部。
具体步骤如下所示:
class Solution{
public:
ListNode* reverseList(ListNode* head){
if(head == NULL || head->next == NULL)
return head;
ListNode* cur = NULL;
ListNode* pre = head;
while(pre != NULL){
ListNode* tmp = pre->next