看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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