c - 在 C 中使用递归技术反转链表

标签 c algorithm

我有以下 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/

相关文章:

c - Visual Studio C 链接器包装选项?

c - 变量和/或数组的问题

mysql - 比较范围的算法

java - 如何理解或解释 Quicksort 中对分区的第一次调用?

algorithm - 为什么标准化数字的最高有效位总是 1?

objective-c - 比较浮点值有多危险?

c - gsocket(服务器模式)出现错误?

c++ - 在 C/C++ 的 ODBC 程序中找不到 SQL.H 和 SQLEXT.H

python - 合并排序 Python - 排序函数的问题

algorithm - 如何使用LIS解决10635 uva