问题描述
输入一个链表,反转链表后,输出新链表的表头。
思路
以3个节点为例:
pre记录当前节点的前一个节点,cur记录当前结点,temp记录当前节点的后一个节点。
当前节点cur不为空,进入循环,先记录cur的下一个节点位置;再让cur的指针指向pre。
移动pre和cur的位置,因为刚才记录了下一个节点的位置,所以该链表不会断,我们让cur走向temp的位置。
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* pre=NULL;
ListNode* cur=pHead;
while(cur){
ListNode* temp=cur->next;
cur->next=pre; //反转
pre=cur; //前移
cur=temp;
}
pHead=pre;
return pHead;
}
};