您的位置:首頁>科技>正文

C語言實現資料結構之棧的詳解

在函式呼叫的過程中, 需要的就是先進後出的特點, 因此, 棧就出現了。

棧是一種資料結構, 是電腦怎麼處理常式運行的一種方式。 具有先進後出的特點, 下面看的就是這些抽象的資料結構怎麼用C語言代碼來實現, 棧能實現, 那麼其他的資料結構也就自然可以用C語言實現的了, 如:佇列。

C語言實現棧的代碼, 可以有陣列形式, 鏈表形式, 下面講解的是陣列形式來實現。

靜態陣列因為有個大小, 而且它在記憶體的棧區, 預設為1M, 所以靜態陣列不會分配的很大, 因此用陣列來實現, 有個棧的容量的問題,

自然就會帶出“棧頂”和“棧底”, 的概念。

實現環境:Visual Studio 2017

存儲資料需要陣列, 同時有個棧中當前位置, 可以想的到, 在C語言中應該至少用結構體來實現。

實現棧的結構體如下:

然後根據棧的特點, 會有這麼幾個介面:

1:判斷是否棧滿;

2:判斷是否棧空;

3:設置棧為空;

4:入棧;

5:出棧;

為了方便陣列操作, 先定義一個宏:

#define N 100

下面是各個介面的實現:

調用以上介面, 來測試棧的效果:

測試結果:

其實棧的實現還有鏈表的方式來實現。 同時, C語言實現棧, 只能到面向過程的範圍。 可以用C++來實現物件導向的棧方式, 調用起來更加方便, 形如:

Mystack ms;

ms.push(1);

ms.push(2);

ms.push(3);

ms.push(4);

ms.push(5);

彈出形如:

int a=ms.pop(1);

實現棧的方式雖然有多種, 但是不要死記硬背, 要根據自己的理解去選擇, 怎麼適合自己的理解就怎麼選擇, 靈活的學習輕鬆的學習, 秘訣就在於此。 比如我的筆記中就記錄了多種方式, 但是這裡只選擇一種合適的:

程式設計領域其實是相通的,相通的東西就是程式設計思想,至於語言的語法不同,只是表現形式,要透過現象看本質,才能真正把握程式設計的靈魂,才能有希望學的越來越輕鬆,否則很可能陷入其中很苦惱。

探索輕鬆學程式設計之道,我一直在做......

程式設計領域其實是相通的,相通的東西就是程式設計思想,至於語言的語法不同,只是表現形式,要透過現象看本質,才能真正把握程式設計的靈魂,才能有希望學的越來越輕鬆,否則很可能陷入其中很苦惱。

探索輕鬆學程式設計之道,我一直在做......

Next Article
喜欢就按个赞吧!!!
点击关闭提示