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 

}; 

편집 :이 내가 {

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

node *p = other.front; 

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

}

(다른 & linked_queue const를)

linked_queue :: linked_queue 해낸 것입니다

+0

원래 목록의 모든 항목을 검토하고 새 목록에 추가하는 것은 어떻습니까? –

+0

새 포인터를 만들고 앞과 같게 설정하고 목록을 가로 질러 원래의 모든 데이터를 복사하십시오. – hv16

+0

새 목록을 의미하지 않습니다. – hv16

답변

0

목록을 살펴보고 동일한 값을 가진 노드를 할당 한 다음 next 포인터를 설정하십시오. 마지막으로 frontback 포인터와 ctr을 설정하면 모두 완료됩니다.

+0

새 노드 포인터를 만들어서 시작하고 모든 데이터를 원본에서 새 포인터로 복사해야합니까? – hv16

+0

질문에서 본 카토의 조언에 따라 아마 더 나을 것입니다 코멘트 섹션. 그렇게하면 우연히 무언가를 할 가능성이 줄어 듭니다. – paddy

+0

네, 맞습니다. – hv16