注:划重点!!必考~
给你单链表的头节点
head
,请你反转链表,并返回反转后的链表
[0, 5000]
-5000 <= Node.val <= 5000
这里我们采用三指针进行反转链表:
注:需要处理好首节点节点之间的更替关系
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
struct ListNode* prev=NULL,*cur=head,*next;
while(cur)//cur为NULL时遍历链表结束
{
//保存下一个节点地址
next=cur->next;
//反转链接方向
cur->next=prev;
//更新后指向结点位置
prev=cur;
//更新指向当前节点位置
cur=next;
}
return prev;
}
每日k题无烦恼,留个三连再走也不迟~