[問題] linked list的 copy constructor

看板C_and_CPP (C/C++)作者 (FableKevinS)時間14年前 (2012/01/02 22:09), 編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/1
開發平台(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)

01/02 23:23, , 1F
你應該要用in.last去transverse原本的list吧?
01/02 23:23, 1F

01/02 23:30, , 2F
問題還滿多的
01/02 23:30, 2F

01/02 23:30, , 3F
首先, while迴圈裡面的in.last全都寫成last了
01/02 23:30, 3F

01/02 23:31, , 4F
還有就是如果copy一個空queue, 那還沒進while就壞了
01/02 23:31, 4F

01/02 23:32, , 5F
然後temp2是多餘的吧?
01/02 23:32, 5F

01/02 23:40, , 6F
因為你沒有物件導向阿~~
01/02 23:40, 6F
文章代碼(AID): #1F0RgrzA (C_and_CPP)
文章代碼(AID): #1F0RgrzA (C_and_CPP)