我有下面的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);

10-05 22:27