我有下面的C代码,它返回链表的反面。
尽管它会反转链表,但我永远不会得到反转链表的头,因为restofElements
节点正在被覆盖。
S *reverseRecursive(S *headref) {
S *firstElement = NULL;
S *restOfElements = NULL;
if (headref==NULL) {
return ;
}
firstElement = headref;
restOfElements = headref->next;
if (restOfElements == NULL)
return headref;
reverseRecursive(restOfElements);
firstElement->next->next = firstElement;
firstElement->next = NULL;
headref = restOfElements;
return headref;
}
如何将反向链表节点的头返回到调用程序?
最佳答案
如果要更改头指针,必须通过引用传递(作为指针)。原型应进行修改,以将头部接收为S**。
S *reverseRecursive(S **headref);