【发布时间】:2022-01-23 08:44:52
【问题描述】:
我得到一个空列表作为输出,谁能帮我解决这个问题。
ListNode* reve(ListNode* L,ListNode* t){
if(L->next==NULL){
t=L;
print(t);
return L;
}
ListNode* k = reve(L->next,t);
k->next=L;
L->next=NULL;
return L;
}
ListNode* reverseList(ListNode* head) {
ListNode* temp=NULL;
reve(head,temp);
return temp;
}
【问题讨论】:
-
你能解释一下你的代码应该如何/为什么工作吗?解释每条线的作用以及它如何适应更大的图景?
-
对我来说(尝试在我的脑海中调试,因为我没有足够的代码来调试)代码只会打印原始列表的尾节点。
-
不清楚这两个函数的输入和输出是什么。
-
另一个问题。这段代码是否应该创建一个新的反向列表,保留原始列表的顺序,还是可以销毁原始列表?
-
最好给你的变量提供比
L、t和k更具描述性的名称。像first和rest这样的参数可以帮助你知道如何处理它们。
标签: c++ recursion linked-list