2014-04-07 108 views
0

任何人都可以幫我指出並解釋我在這個循環鏈表中的邏輯錯誤嗎?提前致謝。C++循環鏈表錯誤

template <class xtype> 
void clist<xtype>:: copylist (const clist<xtype> & other) 
{ 
    node<xtype> *temp; 
    node<xtype> *p; 

    if (head !=NULL) 
     makeEmpty(); 
    if (other.head == NULL) 
     head = NULL; 
    else 
    { 
     p = other.head; 
     head = new node<xtype>; 

     head->info = p->info; 
     temp = head; 

     p = p->next; 

     while(p != head) 
     { 
      temp->next = new node<xtype>; 
      temp = temp->next; 
      temp->info = p->info; 
      p = p->next; 
     } 
     temp->next = head; 
    } 
} 

回答

0

只是快速看一下你的代碼,我發現這一點:

while(p != head) 

您應該測試other.head,不head

+0

但爲什麼使用other.head而不是頭? – user3504938

+0

@ user3504938因爲'p'正在迭代'other'列表。 'head'本身就在你正在創建的列表中,而且不應該通過遍歷'other'來遇到。 – paddy