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

时间:2015-03-19 17:30:44

标签: 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替换第二个就行了。 为什么会这样?

1 个答案:

答案 0 :(得分:2)

在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”指向反向链接列表的头部。