Re: [問題] 鏈結串列 哪邊錯了@@?

看板C_and_CPP (C/C++)作者 (takearest)時間15年前 (2010/07/28 19:58), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《homal (\冏/)》之銘言: : struct Nodes : { : int data; : Nodes *next; : }; : Node* ins(Nodes *ptr, int num) : { : Nodes *tmp_ptr = ptr; : Nodes *ptrNewNode = new Nodes; : ptrNewNode->data = num; : ptrNewNode->next = NULL; : if (ptr == NULL) : { : return ptrNewNode; : } : while (tmp_ptr->next != NULL) : { : tmp_ptr = tmp_ptr->next; : } : tmp_ptr->next= ptrNewNode; : } : int main() : { : Nodes *hdr = NULL; : hdr = ins(hdr, 10); : ins(hdr, 20); : ins(hdr, 30); : return 0; : } : 想要達成的效果是: hdr -> 10 -> 20 -> NULL : 不過 trace 了程式後發現, hdr 的值永遠都是 null : 參悟不透啊 T_T 以下是我在PC Linux下把你的code做部分修改,用gcc編譯可動,供你參考~ #include <stdio.h> typedef struct { int data; struct Nodes *next; }Nodes; Nodes* ins(Nodes *ptr, int num) { Nodes *tmp_ptr = ptr; Nodes *ptrNewNode =(Nodes *)malloc(sizeof(Nodes)); ptrNewNode->data = num; ptrNewNode->next = NULL; if (ptr == NULL) { return ptrNewNode; } while (tmp_ptr->next != NULL) { tmp_ptr =(Nodes *) tmp_ptr->next; } tmp_ptr->next=(struct Nodes *) ptrNewNode; } int main() { Nodes *hdr = NULL,*tmp; hdr = ins(hdr, 10); ins(hdr, 20); ins(hdr, 30); tmp=hdr; while(tmp!=NULL) { printf("val=%d\n",tmp->data); tmp=(Nodes *)tmp->next; } return 0; } 執行結果: val=10 val=20 val=30 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.188.59 ※ 編輯: takearest 來自: 59.120.188.59 (07/28 20:00)
文章代碼(AID): #1CK1jvLj (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CK1jvLj (C_and_CPP)