将给定链表的反向存储到另一个链表中
Store reverse of given linked list into another 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”指向反向链表的头部。
在这个问题中,我基本上将给定链表的逆存储到另一个链表中。 这是函数
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”指向反向链表的头部。