看板 C_and_CPP 關於我們 聯絡資訊
我想將鍊結串列在一開始配置進記憶體時,不是佔用連續空間, 而是分散開的(沒有實際目的,純粹想實驗看看), 所以我先寫了下面這些程式碼: 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
EdisonX:linked* ptmp=pl; 拉到 for 外面試試,原本的寫法已 leak. 08/04 16:45
※ 編輯: frankhsu421 來自: 218.173.90.145 (08/04 16:52)
loveme00835:把操作寫成functions, 不要對node直接處理, 問題就不 08/04 16:57
loveme00835:會是問題... 08/04 16:57
frankhsu421:成功了!!! 但是為什麼程式碼移出去就沒問題? 08/04 16:57
loveme00835:自己畫圖吧... 08/04 17:00