目錄
1. 順序棧操作
2. 共享棧
3. 鏈棧操作
上面的操作都是基於: 初始化棧的時候將 top 指標指向了 -1,有資料時指向棧頂元素。
如果初始化的時候將 top 指標指向 0 位置,這種方式是將 top 指標指向下乙個我們可以插入元素的位置。
在這種情況下,
進行進棧操作的時候,**應該為 s.data[s.top++]=x;
進行出棧操作的時候,**應該為 x=s.data[--s.top];
棧滿條件: top==maxszie;
==> 所以一定要審題清晰!!!
注意: 怎麼銷毀乙個順序棧呢?
首先需要在邏輯上把這個棧清空,然後**棧所占用的記憶體空間。邏輯上清空乙個棧,只需要將 top 指標指向初始化的那個位置。在這些**中,使用的是變數宣告的方式來分配相應的記憶體空間,並沒有使用 malloc 函式,所以給棧分配的記憶體空間會在函式結束後由系統自動**。
兩個棧共享同一片記憶體空間。
棧滿條件: top0+1=top1;
用鏈式儲存實現的棧叫鏈棧,同樣的,在確定了儲存結構之後,我們也需要**基於這種儲存結構如何實現基本操作!!!!
鏈棧的定義和單鏈表的定義幾乎沒有任何區別,只是名字上的改動。
鏈棧和單鏈表關係:當用頭插法建立單鏈表的時候,等同於進棧,如果刪除元素只能在表頭這一端進行,則和出棧等同。
所以和單鏈表類似,當用鏈式儲存的方式來實現鏈棧的時候,可以分為 帶頭結點 和 不帶頭結點 。
兩種方式對棧空的判斷條件不同,進棧和出棧操作對應單鏈表中插入資料元素和刪除資料元素的操作,只不過插入和刪除只能在表頭進行。
如何在表頭的位置插入和刪除,在單鏈表那一節已經有了,這裡不贅述。課本中是推薦不帶頭結點的實現方式,但是不管帶頭結點還是不帶頭結點都需要會寫。
看書聽課屬於知識輸入這一環節,考試比的是"輸出"能力。對輸出的練習才能使輸出能力變強,比如: 動手練習、做題、給別人講
順序棧 鏈棧基本操作
include stdafx.h include stdio.h include stdlib.h define stack max size 7 int stackdata stack max size define stack max size 14 int stackdata stack ma...
順序棧 鏈棧基本操作
include stdafx.h include stdio.h include stdlib.h define stack max size 7 int stackdata stack max size define stack max size 14 int stackdata stack ma...
順序棧 鏈棧基本操作
include stdafx.h include stdio.h include stdlib.h define stack max size 7 int stackdata stack max size define stack max size 14 int stackdata stack ma...