3 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
所以你應(yīng)該已經(jīng)弄懂了 struct 的定義和 typedef 是怎么回事吧。
那么,在 main 中你定義了 a、b、c 這三個(gè) NODE,并且讓 a 鏈到 b,b 鏈到 c,c 的 next 指向“空”
雖然運(yùn)行起來(lái)沒有錯(cuò),但額外說(shuō)一下:c.next='\0' 這里你把 next 賦值為 '\0',這是“空字符”。而這里在邏輯上你需要的是讓 next 為“空指針”(也就是讓 next 的值為 0),那么直接賦值 0 或 NULL 就可以了。 因?yàn)?'\0' 的值也是 0,所以這里沒有運(yùn)行錯(cuò)誤,但這么寫邏輯上就有些混亂了。
h 和 p 是指針,h 指向 a,而 p 一開始也指向 a。
while 循環(huán)的條件是 p 不為空指針。那么一開始 p 指向 a,所以進(jìn)入循環(huán):
首先打印 p 指向的節(jié)點(diǎn)的 data 值。
然后 p = p -> next,這句就是讓 p 指向下一個(gè)節(jié)點(diǎn)。
如果某次循環(huán)時(shí) p 已經(jīng)指向最后一個(gè)節(jié)點(diǎn)了(這例子中就是 c),那么 p = p -> next 之后 p 就是空指針了(因?yàn)?c 的 next 是空指針,表明 c 為最后一個(gè)節(jié)點(diǎn)),再進(jìn)入 while 時(shí) p 為空指針,所以會(huì)結(jié)束循環(huán)。
那么整個(gè) while 就是利用 p 指針,遍歷了一遍 a b c 節(jié)點(diǎn)鏈接而成的鏈表(對(duì),這樣的結(jié)構(gòu)就叫“鏈表”)

TA貢獻(xiàn)5條經(jīng)驗(yàn) 獲得超1個(gè)贊
嗯嗯typedef struct? 我都理解了,只是這個(gè)循環(huán)我還是有點(diǎn)迷糊,為什么p的值會(huì)移動(dòng),會(huì)發(fā)生變化,還有–>這個(gè)符號(hào)的用法,具體作用什么?
- 3 回答
- 0 關(guān)注
- 1571 瀏覽
添加回答
舉報(bào)