将链表复制到另一个链表C ++

时间:2018-09-25 19:56:29

标签: c++

我正在尝试将一个列表复制到另一个列表,但是它仅复制第一个元素。当我调试它时,它在高亮行显示了错误。 您能帮我解决此错误并向我解释发生了什么问题吗?

.asInstanceOf[Double]

1 个答案:

答案 0 :(得分:0)

您仅为List3列表分配了1个x节点。

在第一次循环迭代中,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";
    }
}