每日一题(反转链表)
思路:
可以定义一个新的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; }
完结
反转链表的分析就到这里啦,若有不足,欢迎评论区指正,下期见!