標籤:棧
各位看官們,大家好,從今天開始,我們講大型章回體科技小說 :C栗子,也就是C語言執行個體。閑話休提,
言歸正轉。讓我們一起talk C栗子吧!
看官們,上一回中咱們說的是雙向鏈表的例子,這一回咱們說的例子是:棧。
什麼是棧?我們聽過龍門客棧,你這個是哪家客棧?我還沒有說,台下已經有客官在問了。看官們,棧是
類似我們在前面幾回中說過的鏈表,它也是用來存放資料的一種抽象的資料結構。因為比較抽象,咱們還
是舉個現實生活中的例子來說明吧。
我們出去旅遊時通常會拿一個行李箱存放自己的物品,比如衣服,鞋子電腦,相機等。出發前,我們會把
這些東西依次放到行李箱中,首先會把不容易壓壞的物品放到箱底,比如衣服。然後把容易壓壞的物品放
到上面,比如電腦和相機。當我們到達目的地時,會取出行李箱中的物品。首先拿出放在箱子上面的電腦
和相機,最後拿出放在箱子底部的衣服。大家看看,拿出物品的順序和存放物品的順序正好相反。最後放
進去的電腦和相機等易壓碎的物品最先拿出來,最先放進去的衣服等不易壓碎的物品最後拿出來。這個行
李箱就好比一個存放資料的棧,箱子裡面的物品好比資料,從箱子裡拿物品好比操作資料,拿物品要先拿
最後存放的物品,操作資料也要先操作最後放到棧中的資料。就是說最先存放到棧中的資料最後被拿出。
這便是棧的特點:先進後出。
看官們,和鏈表一樣,棧也有兩種實現方式:順序存放和鏈式存放。我們會分別舉例子說明。棧有兩個基
本的操作:出棧和入棧。入棧就是把資料存放到棧中,出棧就是把資料從棧中拿出來。入棧和出棧這兩個
操作要符合棧“先進後出”的特點。
看官們,本文中就不寫代碼了,詳細的代碼放到了我的資源中,大家可以點選連結下載使用。關於代碼中
有一些需要注意的地方和大家說一下:
- 棧的順序儲存是通過一個全域數組實現的,棧的大小就也就是數組的長度,可以自己定義。
- 入棧時要確認棧是否已經満了,不然會有溢出。我在代碼中多放了一個空間可以避免溢出。
- 出棧時要確認棧是否已經空了,不然會有溢出。我在代碼中通過多放了一個變數size可以避免溢出。
各位看官,關於棧的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解。
一起talk C栗子吧(第十六回:C語言執行個體--棧一)