返回信息流代码返回的就是最后一个结点,而不是你想要的结果。逻辑没能明确定义,导致错误的实现。
这是一条镜像帖。来源:北邮人论坛 / cpp / #102675同步于 2023/5/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
Re: 做很简单的反转链表时有个bug想不出为什么
a314006706
2023/5/18镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
但我return的是head,我在return前打印了一下发现返回的没问题,但是马上打印next1之后发现还是尾节点,按理来说next1接受的应该是另一层返回的head而不是尾节点,还是没太懂[em9]
【 在 a314006706 的大作中提到: 】
: 代码返回的就是最后一个结点,而不是你想要的结果。逻辑没能明确定义,导致错误的实现。
LinkList ReverseRecursively(LinkList &head)
{
if (!head || !(head->next))
{
return head;
}
LinkList newhead = ReverseRecursively(head->next);
head->next->next = head;
head->next = NULL;
return newhead;
}
【 在 lalala121 (lalalala) 的大作中提到: 】
: 代码逻辑改成返回逆转后的头应该就没问题了,你这个是返回逆转后的尾。
楼主学Haskell语言吧。超简单
myReverse :: [a] -> [a]
myReverse [] = []
myReverse (x:xs) = (myReverse xs) ++ [x]
简单吧,三行代码搞定。
【 在 Karady 的大作中提到: 】
: class Solution {
: public:
: ListNode* reverseList(ListNode* head) {
: ...................
你return的是res不是head。 注意代码的语义。
【 在 Karady 的大作中提到: 】
: 但我return的是head,我在return前打印了一下发现返回的没问题,但是马上打印next1之后发现还是尾节点,按理来说next1接受的应该是另一层返回的head而不是尾节点,还是没太懂