在这个问题中,我基本上将给定链表的反转存储到另一个链表中。 这是函数
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替换第二个就行了。 为什么会这样?
答案 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”指向反向链接列表的头部。