双重列表复制构造函数:它与单一列表复制构造函数有何不同?

时间:2016-12-23 07:04:33

标签: c++ copy-constructor doubly-linked-list

我刚刚完成了一个单独的列表复制构造函数,我现在正在制作一个双列表复制构造函数。任何人都可以告诉我它与单个列表构造函数有多么不同,因为我在重新开始我的双向链表复制构造函数或复制我的单个列表复制构造函数之间存在冲突。我应该怎么做呢?

如果有帮助,这是我的单链表中的复制构造函数:

        List(const List &copying) : head(NULL)
        {
            Node* cur = copying.head;
            int size = copying.size();
            Node* end = NULL;
            for(int q = 0; q < size; q++)
            {
                Node* n = new Node;
                n->value = cur->value;
                if (head == NULL)
                {
                    head = n;
                    end = head;
                }
                else
                {
                    end->next = n;
                    end = n;
                }
                cur = cur->next;
            }
            end->next = NULL;
        }

欢迎任何和所有输入。谢谢大家: - )

1 个答案:

答案 0 :(得分:1)

我认为您只需要存储上一个节点(prv)。 假设您的节点有prv作为数据成员。

List(const List &copying) : head(NULL)
{
    Node* cur = copying.head;
    int size = copying.size();
    Node* end = NULL;
    Node* prv = NULL:
    for(int q = 0; q < size; q++)
    {
        Node* n = new Node;
        n->value = cur->value;
        if (head == NULL)
        {
            head = n;
            end = head;
        }
        else
        {
            end->next = n;
            end = n;
        }
        n->prv=prv;
        prv=n;
        cur = cur->next;
    }
    end->next = NULL;
}