我有以下 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;
}
如何将反向链表节点的头部返回给调用程序?
最佳答案
如果你想改变头指针,你必须通过引用传递它(作为指针)。应修改原型(prototype)以接收头作为 S **。
S *reverseRecursive(S **headref);
关于c - 在 C 中使用递归技术反转链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18403722/