c - 将给定链表的反向存储到另一个链表中

标签 c data-structures linked-list

在这个问题中,我基本上将给定链表的逆存储到另一个链表中。 这是函数

void copy(struct node** aref,struct node** bref) {
    struct node* first = *aref;
    struct node* second = *bref;

    while(first!=NULL) {
        struct node* tmp = (struct node*)malloc(sizeof(struct node));

        tmp->data = first->data;
        tmp->next = second;
        second = tmp;

        first = first->next;
    }
}

这行不通。但是,如果我用 *bref 替换 second,它就可以工作。 为什么会这样?

最佳答案

在while循环之后添加下面的代码

while(first!=NULL)
{
    struct node* tmp=(struct node*)malloc(sizeof(struct node));
    tmp->data=first->data;
    tmp->next=second;
    second=tmp;

    first=first->next;
}
/* CHANGE HERE */
*bref = second;

原因是您必须将“*bref”指向反向链表的头部。

关于c - 将给定链表的反向存储到另一个链表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29151272/

相关文章:

c - 将 int 变量的值赋给 int 指针

haskell - haskell中树上的最大元素?

c - 如何查找 B 树的层数

data-structures - 优先队列数据结构

使用虚拟节点连接 2 个单链表

c - 画出下列程序的进程树

c - 对结构成员的字符串操作

c++ - 如何在 SPOJ 等竞争性编程网站中处理输入/输出格式?

java - 在java中编译链接列表代码时的警告

java - 2个链表集之间的并集和交集,java