链表复制构造函数C ++

时间:2013-10-14 04:42:12

标签: c++ pointers memory-management linked-list copy-constructor

我真的很困惑,为什么这个拷贝构造函数不起作用!我创建的iter指针指向与head相同的ListNode,但是当我将内容从s复制到ithead和{{1没有连接!

换句话说,当打印头时,只有第一个字符在那里,但如果我要遍历iter,列表的其余部分就在那里。 为什么不是iteriter指向相同的对象?!

注意:这是一个链接列表,用于实现名为MyString的类。

head

1 个答案:

答案 0 :(得分:3)

您似乎没有将列表附加到任何地方。

试试这个。

MyString::MyString( const MyString & s ) {
    if ( s.head == 0)
        head = 0;
    else {
        head = new ListNode (s.head -> info);
        ++ NumAllocations;
        ListNode *iter = head;
        for (ListNode *ptr = s.head -> next; ptr != 0; ptr = ptr ->next) {
            iter -> next = new ListNode (ptr -> info);
            iter = iter -> next;
            ++ NumAllocations;
        }
        printList(head);
    }
}

注意iter-> gt的附件。你只是在创建一个新节点并且什么都不做。