作者SFMAndroid (安卓發送)
看板Programming
標題[問題] 有關linked list中node的link
時間Mon Nov 13 18:06:47 2017
如題
剛剛在寫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://webptt.com/m.aspx?n=bbs/Programming/M.1510567610.A.B1C.html
1F:→ MOONRAKER: 阿你print list一定有個迴圈吧 他的 220.135.118.23 11/13 18:31
2F:→ MOONRAKER: 停止條件是啥 220.135.118.23 11/13 18:31
3F:推 alan23273850: 我猜迴圈是 while(dataPtr!=NULL) 123.193.38.80 11/13 19:26
4F:→ alan23273850: 把pointer的位址印出來就知道了吧 123.193.38.80 11/13 19:26
5F:→ stupid0319: stack or 或使用malloc取得的空間 122.117.78.26 11/14 11:40
6F:→ stupid0319: 原空間原本的資料不一定是零 122.117.78.26 11/14 11:41
7F:→ stupid0319: 若dataPtr->next不為0的話!= NULL 122.117.78.26 11/14 11:44
8F:推 tailau0: C語言為了效率基本上不會雞婆做程式沒叫 76.103.100.123 11/15 15:19
9F:→ tailau0: 它做的事。malloc只會去要一塊記憶體,不 76.103.100.123 11/15 15:19
10F:→ tailau0: 會雞婆去歸零,不然如果程式要到記憶體下 76.103.100.123 11/15 15:19
11F:→ tailau0: 一行就填值,歸零不就白做了?你如果想要 76.103.100.123 11/15 15:19
12F:→ tailau0: 記憶體又要歸零,你可以呼叫calloc。 76.103.100.123 11/15 15:19
13F:推 aulopiformes: 因為迴圈終止條件需要用的list的最 172.254.20.130 12/01 03:27
14F:→ aulopiformes: 後一個node,這個node指向null 172.254.20.130 12/01 03:27