每日一题(反转链表)
206. 反转链表 - 力扣(LeetCode)
思路:
可以定义一个新的newhead结构体指针。再定义cur指针和next指针互相配合,将原链表中的节点从头到尾依次头插到newhead链表中,同时更新newhead。最后返回newhead即可。
注意:这里头插是改变cur指针的next,让cur指针的next指向newhead之后,cur就需要向后走指向其后一个节点,但是此时cur的next已经被修改了,所以一定要提前保存好cur的next指针的地址。再使用
cur = next
;语句改变cur的指向。
代码实现:
struct ListNode* reverseList(struct ListNode* head){
struct ListNode* cur=head;
struct ListNode* newhead=NULL;
struct ListNode* next =NULL;
while(cur)
{
//将头取下来进行头插
next = cur->next;//记录下一个位置
cur->next = newhead;
newhead = cur;//更新头指针
cur = next;
}
return newhead;
}
完结
反转链表的分析就到这里啦,若有不足,欢迎评论区指正,下期见!