[問題] 有關linked list中node的link

看板Programming作者 (安卓發送)時間7年前 (2017/11/13 18:06), 編輯推噓3(3011)
留言14則, 5人參與, 7年前最新討論串1/1
如題 剛剛在寫linked list的時候 因為沒有將node的link設為NULL 導致在print list的時候產生無窮迴圈 例如: typedef struct node { int data; struct node* next; } NODE; 在設定時沒有initialize NODE* dataPtr; dataPtr = (NODE* )malloc(sizeof(NODE)); dataPtr -> next = NULL (少這行) 想請問為什麼沒有上述那行在print linked list時就會變成無窮迴圈?? 上網查後有點不太懂 網上是說沒有給NULL會變成garbage?? 但是我已經有給node分配memory了 為什麼還會有garbage的問題 或是我有哪裡理解錯了 感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.136.220 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1510567610.A.B1C.html

11/13 18:31, 7年前 , 1F
阿你print list一定有個迴圈吧 他的
11/13 18:31, 1F

11/13 18:31, 7年前 , 2F
停止條件是啥
11/13 18:31, 2F

11/13 19:26, 7年前 , 3F
我猜迴圈是 while(dataPtr!=NULL)
11/13 19:26, 3F

11/13 19:26, 7年前 , 4F
把pointer的位址印出來就知道了吧
11/13 19:26, 4F

11/14 11:40, 7年前 , 5F
stack or 或使用malloc取得的空間
11/14 11:40, 5F

11/14 11:41, 7年前 , 6F
原空間原本的資料不一定是零
11/14 11:41, 6F

11/14 11:44, 7年前 , 7F
若dataPtr->next不為0的話!= NULL
11/14 11:44, 7F

11/15 15:19, 7年前 , 8F
C語言為了效率基本上不會雞婆做程式沒叫
11/15 15:19, 8F

11/15 15:19, 7年前 , 9F
它做的事。malloc只會去要一塊記憶體,不
11/15 15:19, 9F

11/15 15:19, 7年前 , 10F
會雞婆去歸零,不然如果程式要到記憶體下
11/15 15:19, 10F

11/15 15:19, 7年前 , 11F
一行就填值,歸零不就白做了?你如果想要
11/15 15:19, 11F

11/15 15:19, 7年前 , 12F
記憶體又要歸零,你可以呼叫calloc。
11/15 15:19, 12F

12/01 03:27, 7年前 , 13F
因為迴圈終止條件需要用的list的最
12/01 03:27, 13F

12/01 03:27, 7年前 , 14F
後一個node,這個node指向null
12/01 03:27, 14F
文章代碼(AID): #1Q2MwwiS (Programming)
文章代碼(AID): #1Q2MwwiS (Programming)