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