鏈?;静僮鳎ㄈ霔:统鰲#〤語言詳解
鏈棧是棧的一種實現(xiàn)方法,特指用鏈表實現(xiàn)棧存儲結(jié)構(gòu)。
鏈棧的實現(xiàn)思路和順序棧類似,順序棧是將順序表(數(shù)組)的一端做棧底,另一端做棧頂;鏈棧也是如此,我們通常將鏈表的頭部做棧頂,尾部做棧底,如圖?1 所示:

以鏈表的頭部做棧頂,最大的好處是:可以避免在實現(xiàn)元素 "入棧" 和 "出棧" 時做大量遍歷鏈表的耗時操作。有元素入棧時,只需要將其插入到鏈表的頭部;有元素出棧時,只需要從鏈表的頭部依次摘取結(jié)點。
因此,鏈棧實際上是一個采用頭插法插入或刪除數(shù)據(jù)的鏈表。
鏈棧元素入棧
例如,依次將 1、2、3、4 存儲到棧中,每個元素的入棧過程如圖 2 所示:

C語言實現(xiàn)代碼為:
鏈棧元素出棧
在圖 2e) 所示鏈表的基礎(chǔ)上,假設(shè)將元素 3 從棧中取出,根據(jù)"先進后出"的原則,要先將元素 4 出棧,然后元素 3 才能出棧,整個操作過程如圖 3 所示:

實現(xiàn)棧頂元素出棧的 C 語言代碼為:
代碼中通過使用 if 判斷語句,避免了用戶執(zhí)行"棧已空卻還要數(shù)據(jù)出棧"錯誤操作。
總結(jié)
本節(jié),通過采用頭插法操作數(shù)據(jù)的單鏈表實現(xiàn)了鏈棧結(jié)構(gòu),這里給出鏈棧及基本操作的C語言完整代碼:
程序運行結(jié)果為:
彈棧元素:4 棧頂元素:3
彈棧元素:3 棧頂元素:2
彈棧元素:2 棧頂元素:1
彈棧元素:1 棧已空
棧內(nèi)沒有元素
標簽: