我得到了空列表作为输出,有人能帮我吗。
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;
}
逻辑是有道理的,只是列表的打印应该在列表反转之后进行。您应该删除print(t)
,而将print(temp)
放在底部函数中对reve()
的调用之后。
t
也应该是指向指针的指针,以便更改传入指针的值:
ListNode* reve(ListNode* L, ListNode** t) {
if (L->next == NULL) {
*t = L;
return L;
}
ListNode* k = reve(L->next, t);
k->next = L;
L->next = NULL;
return L;
}
ListNode* reverseList(ListNode* head) {
if (!head) return NULL;
ListNode* temp;
reve(head, &temp);
print(temp);
return temp;
}