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

Doubly List Copy Constructor: How different is it from a Singly List Copy Constructor?

本文关键字:复制 列表 构造函数 何不同 单一      更新时间:2023-10-16

我刚刚完成了单个列表复制构造函数的工作,现在我要制作双重列表复制构造函数。谁能告诉我它与单个列表构造函数有多大不同,因为我要重新启动我的双重链接列表复制构造函数或复制我的单列列表复制构造函数之间的矛盾。我应该怎么做?

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

        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;
        }

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

我认为您只需要存储以前的节点(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;
}