代码之家  ›  专栏  ›  技术社区  ›  BusyProgrammer

双列表复制构造函数:它与单列表复制构造函数有什么不同?

  •  0
  • BusyProgrammer  · 技术社区  · 8 年前

    我刚刚完成了单列表副本构造函数的工作,现在我正在着手创建双列表副本构造函数。有人能告诉我它与单列表构造函数有多大不同吗,因为我在重新开始双链接列表副本构造函数和复制单列表副本构造函数之间存在冲突。我该怎么办?

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

            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 回复  |  直到 8 年前
        1
  •  1
  •   user1438832    8 年前

    我认为您只需要存储上一个节点(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;
    }