2013-05-03 41 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 

}; 

编辑:这就是我想出了

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

如何查看原始列表中的所有项目并将它们添加到新列表中? – 2013-05-03 04:18:47

+0

我会创建一个新的指针,并将其设置为等于前,遍历列表并将原始数据全部复制到前面 – hv16 2013-05-03 04:22:00

+0

我的意思是新列表不是前面的 – hv16 2013-05-03 04:22:51

回答

0

只需遍历列表,分配一堆具有相同值的节点,并设置next指针。最后,设置frontback指针和ctr,就完成了。

+0

我应该从创建一个新的节点指针开始,并将其设置为前面并将所有数据从原始指针复制到新指针 – hv16 2013-05-03 04:26:57

+0

您可能最好遵循Vaughn Cato对问题的建议评论部分。这样你就不太可能偶然地做一些傻事。 – paddy 2013-05-03 04:34:18

+0

是的,你是对的。 – hv16 2013-05-03 04:37:00