这道题每次做都会忘记,这里写下题解,翻转链表的精髓是在于用一个pre节点来存储上一个节点,用pre来指向NULL(相当于此时的pre指向链表的末端),用cur指向当前头结点,通过temp节点来断开连接暂存头结点之后的连接节点,此时将cur的next指向pre,更新pre和cur节点,此时注意,假设节点1和2还未连接,这里交给下一次判断中的cur->next=pre.就像是第一次中1节点还未和null连接的状态。
ListNode* reverseList(ListNode* head) {
ListNode *pre=NULL;
ListNode *cur=head;
while(cur!=NULL)
{
ListNode *temp=cur->next;
cur->next=pre;
pre=cur;
cur=temp;
}
return pre;
}