Reverse a singly linked list.
很简单的一道题,问题在于要避免翻转后链表尾部的环。
ListNode* reverseList(ListNode* head) {
if(head==NULL)
return NULL;
ListNode * header=new ListNode(-1);
ListNode * p0=header;
ListNode * p1=head;
p0->next=p1;
while(p1!=NULL){
ListNode * p2=p1->next;
p1->next=p0;
p0=p1;
p1=p2;
}
free(header);
head->next=NULL;
return p0;
}开始我没过,因为想当然的觉得既然header被free了,那么之前赋值的p1->next=header就是NULL
这是犯了机械主义的错误,木有考虑到事物是变化和互相联系的。。。
被赋值后,p1->next和header就木有啥关系了。
还有,单独写一个header能避免处理单节点的情况
本文探讨如何在不引入链表尾部环的情况下反转单链表,通过使用额外节点和巧妙地处理指针,避免了常规反转操作可能引发的问题。
610

被折叠的 条评论
为什么被折叠?



