[問題] 鍊結串列在記憶體配置時,如何分散配置?

看板C_and_CPP作者 (問號)時間12年前 (2012/08/04 16:39), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/2 (看更多)
我想將鍊結串列在一開始配置進記憶體時,不是佔用連續空間, 而是分散開的(沒有實際目的,純粹想實驗看看), 所以我先寫了下面這些程式碼: struct linked { int value; linked* next; }; . . . . int main(){ int size; cout<<"Linked List的欄位數:"; cin>>size; linked* pl=new linked; for(int i=0; i<size; i++){ linked* ptmp=pl; ptmp->value=2*i; if(i==size-1) ptmp->next=NULL; else {ptmp->next=new linked; ptmp=ptmp->next;} } . . . } 但是執行後會發生錯誤,我猜原因是因為寫在迴圈內的 linked* ptmp=pl; 及 ptmp->next=new linked; 只會執行一次,所以不會一直重複配置。 想請問:程式碼要怎麼寫才能達到我的目的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.90.145

08/04 16:45, , 1F
linked* ptmp=pl; 拉到 for 外面試試,原本的寫法已 leak.
08/04 16:45, 1F
※ 編輯: frankhsu421 來自: 218.173.90.145 (08/04 16:52)

08/04 16:57, , 2F
把操作寫成functions, 不要對node直接處理, 問題就不
08/04 16:57, 2F

08/04 16:57, , 3F
會是問題...
08/04 16:57, 3F

08/04 16:57, , 4F
成功了!!! 但是為什麼程式碼移出去就沒問題?
08/04 16:57, 4F

08/04 17:00, , 5F
自己畫圖吧...
08/04 17:00, 5F
文章代碼(AID): #1G7D_U9D (C_and_CPP)
文章代碼(AID): #1G7D_U9D (C_and_CPP)