作者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/cn.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