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

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