我试图将 1 个列表复制到另一个列表,但它只复制第一个元素。当我调试它时,它在突出显示的行上向我显示了错误。你能帮我解决这个错误并向我解释发生了什么问题吗?
struct List1 {
int data;
List* next;
};
struct List3 {
int data3;
List3* next3;
};
void copyList(){
if(p==NULL) cout<<"Lista este vida\n";
else
{
c=p;
List3* x = new List3;
while(c!=NULL)
{
***x->data3 = c->data;***
cout<<x->data3<<" ";
c=c->next;
x=x->next3;
}
}
cout <<"\nList has been copied successful\n";
}
您只List3
为x
列表分配了 1 个节点。
在第一次循环迭代中,x
指向一个有效List3
实例。但是你没有初始化它的next3
成员。所以在下一次循环迭代中, 的值x
变为不确定,它不是指向有效内存。
您需要为要复制的每个值分配一个单独的节点。例如:
void copyList()
{
if (p == NULL)
cout << "Lista este vida\n";
else
{
List1 *c = p;
List3* x = NULL;
List3** px = &x;
do
{
*px = new List3;
(*px)->data3 = c->data;
(*px)->next3 = NULL;
cout << (*px)->data3 << " ";
px = &((*px)->next3);
c = c->next;
}
while (c != NULL);
// use x as needed. don't forget to delete all
// of the nodes when you are done using them!
cout << "\nList has been copied successful\n";
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句