2 2 順序棧 鏈棧 基本操作

2021-10-08 15:59:15 字數 1800 閱讀 2636

目錄

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...