题目描述

代码解决(思路1:双指针)
class Solution { public: ListNode* reverseList(ListNode* head) { ListNode*temp;//保存cur下一个节点 ListNode*cur=head; ListNode*pre=NULL; while(cur) { temp=cur->next;// 保存一下 cur的下一个节点,因为接下来要改变cur->next cur->next=pre;//翻转 //更新pre和cur pre=cur; cur=temp; } return pre; } };
初始化三个指针
cur、pre和temp,其中cur指向链表的头节点,pre初始化为NULL,temp用于保存cur的下一个节点。使用一个
while循环来遍历链表,循环的条件是cur不为NULL。在循环内部,首先使用
temp保存cur的下一个节点,因为接下来要改变cur的指针域,指向pre。将
cur的指针域指向pre,完成翻转。更新
pre和cur,将pre指向cur,cur指向temp。当
cur为NULL时,循环结束,此时pre指向翻转后的链表的头节点,返回pre。


















