2013-05-03 3 views
0

Итак, я пытаюсь создать конструктор копирования для связанного списка. Я знаю, как создать конструктор копирования для массива, но не для связанного списка. Может кто-нибудь дать мне представление о том, как я могу это сделать и спасибо.Как создать конструктор копирования для связанного списка

class node 
{ 


public : 

    double data; 
    node *next; /// pointer that points to next elemnt 
    node() { next = NULL; data = 0; } 
    node (double val) { next = NULL; data = val; } 

private: 



}; 

заголовок очереди

class linked_queue 
{ 


public : 

    linked_queue() { front = NULL; back = NULL; ctr = 0; } /// default constructor 
    bool _empty(); 
    void _size(); 
    void _front(); 
    void _back(); 
    void _push(double); 
    void pop(); 
    void _display(); 
    ~linked_queue(); /// destructor 
    linked_queue& operator= (const linked_queue& rhs); 
    linked_queue(const linked_queue& other); 

private : 

    int ctr; /// counter 
    node *front; /// front pointer 
    node *back; ///back pointer 

}; 

Edit: Это то, что я придумал

linked_queue :: linked_queue (сопзЬ linked_queue & другой) {

ctr = 0; 
front = NULL; 
back = NULL; 

node *p = other.front; 

while (p != NULL) 
{ 
    _push(p->data); 
    p = p->next; 
} 

}

+0

Как насчет прохождения всех элементов в исходном списке и добавления их в новый список? –

+0

Смогу ли я создать новый указатель и установить его равным фронту и пересечь список и скопировать все данные из оригинала в начало – hv16

+0

Я имею в виду новый список не фронт – hv16

ответ

0

Пройдите по списку, выделите кучу узлов с одинаковыми значениями и установите указатели next. Наконец, установите указатели front и back и ctr, и все готово.

+0

Должен ли я начать с создания нового указателя узла и установить его на передний план и скопировать все данные с оригинала на новый указатель – hv16

+0

Возможно, вам, вероятно, лучше следовать совету Вона Катона из Вопроса комментарии. Таким образом, вы вряд ли совершите что-то глупое случайно. – paddy

+0

Да, вы правы. – hv16

Смежные вопросы