c語言銷毀棧的函數(shù)。大家看看寫的對不?
2 回答

白衣染霜花
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個贊
這兩個函數(shù)一個是銷毀棧DestroyStack,一個是清空棧ClearStack
銷毀是把整個棧都釋放掉,清空只是把棧里元素清除。
因?yàn)槟愕臈T厥莍nt型基本變量,所以棧元素內(nèi)容是直接存放在??臻g的,并沒有另外申請內(nèi)存保存棧元素,所以在從棧里移除棧元素時,不需要調(diào)用free函數(shù)。
實(shí)際上你的DestroyStack可以很直接的如下:
int DestroyStack(stack &s)
{
free(s.base); //釋放??臻g,這里假設(shè)s.base是個指針而不是數(shù)組
//如果s結(jié)構(gòu)也是動態(tài)申請的,也需要執(zhí)行free(s);
}
至于ClearStack,書上寫的是沒問題的,清空棧,不是要釋放??臻g,而是把棧里的元素都清除,最直接的做法就是把棧頂指針指向棧底指針,棧頂和棧底指針相同時,就表示棧內(nèi)無元素,??臻g還是保留,下次可以繼續(xù)把棧元素壓棧和彈棧。
- 2 回答
- 0 關(guān)注
- 950 瀏覽
添加回答
舉報
0/150
提交
取消