作者FableKevinS (FableKevinS)
看板C_and_CPP
標題[問題] linked list的 copy constructor
時間Mon Jan 2 22:09:54 2012
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
c++
問題(Question):
無法正確deep copy double linked list
以下是我的演算法:
class Node{
Node *next;
int item;
};
class Queue{
Node *initial, *last;
}
//copy constructor
Queue(const Queue& in){
Node *temp; //創造第一個新節點
temp=new Node;
temp->item=in.initial->item;
temp->next=NULL;
initial=temp; //將initial放到新節點上
Node *temp2;
temp2=NULL;
int k=1;
while(last){
initial->next=new Node; //創造下一個新節點
if(k==1){
temp2= initial->next; //將第二個新節點存起來
k++; //最後給initial->next
}
initial=initial->next; //將initial推至下一個新節點
initial->item=last->item;
last=last->next; //last推至下一個原節點
}
initial->next=NULL; //將最後一個新節點的指標設為0
last=initial; //將last放到最後一個新節點
//將initial設為第一個新節點
initial=temp; //第二個新節點
initial->next=temp2; //
}
這樣下去跑會crash 麻煩幫我看一下謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.241.250
※ 編輯: FableKevinS 來自: 140.112.241.250 (01/02 22:12)
※ 編輯: FableKevinS 來自: 140.112.241.250 (01/02 22:27)
→ PkmX:你應該要用in.last去transverse原本的list吧? 01/02 23:23
→ shadow0326:問題還滿多的 01/02 23:30
→ shadow0326:首先, while迴圈裡面的in.last全都寫成last了 01/02 23:30
→ shadow0326:還有就是如果copy一個空queue, 那還沒進while就壞了 01/02 23:31
→ shadow0326:然後temp2是多餘的吧? 01/02 23:32
→ loveme00835:因為你沒有物件導向阿~~ 01/02 23:40