用三个指针pre,cur,tmp实现链表的反转。有以下两步
先初始化cur为头节点,pre为null。
然后反复进入循环,tmp赋为cur->next,cur->next赋为pre(在原链表的基础上当前节点的前一个节点,第一次为null),然后pre和cur依次后移,直到cur==null结束循环,返回pre(反转后的链表的头节点)。代码如下
ListNode* reverseList(ListNode* head) {
ListNode *cur=head;ListNode *pre=nullptr;
while(cur!=nullptr){
ListNode *tmp=cur->next;
cur->next=pre;
pre=cur;
cur=tmp;
}
return pre;
}