數(shù)據(jù)分析怎么做? 這個(gè)關(guān)于鏈表的空間的釋放是怎么回事,不是應(yīng)該是while(p)嗎?
這個(gè)關(guān)于鏈表的空間的釋放是怎么回事,不是應(yīng)該是while(p)嗎?所謂鏈表就是用指針將內(nèi)存中動(dòng)態(tài)分配的節(jié)點(diǎn)空間鏈接到一個(gè)列表中。因此,創(chuàng)建表的過程就是每次為新節(jié)點(diǎn)分配內(nèi)存;因此,要釋放空間,必須自始至
這個(gè)關(guān)于鏈表的空間的釋放是怎么回事,不是應(yīng)該是while(p)嗎?
所謂鏈表就是用指針將內(nèi)存中動(dòng)態(tài)分配的節(jié)點(diǎn)空間鏈接到一個(gè)列表中。因此,創(chuàng)建表的過程就是每次為新節(jié)點(diǎn)分配內(nèi)存;因此,要釋放空間,必須自始至終逐個(gè)釋放節(jié)點(diǎn),這樣才能釋放所有節(jié)點(diǎn)。此代碼釋放整個(gè)鏈表空間的內(nèi)存;while循環(huán)的功能是從頭到尾釋放后續(xù)節(jié)點(diǎn)。如果直接釋放(phead),后續(xù)節(jié)點(diǎn)將找不到,這將導(dǎo)致內(nèi)存空間泄漏。此外,while循環(huán)中還有一個(gè)錯(cuò)誤。假設(shè)在釋放倒數(shù)第二個(gè)節(jié)點(diǎn)后,phead指向最后一個(gè)節(jié)點(diǎn),最后一個(gè)節(jié)點(diǎn)的next為空,那么最后一個(gè)節(jié)點(diǎn)沒有被釋放,while退出。while循環(huán)應(yīng)更正為: