關於數據結構的學習筆記——棧的基礎知識

3、棧

3.1 棧

3.1.1抽象數據類型棧的定義

:限定僅在表尾進行插入或刪除操做的線性表;表尾端稱爲棧頂,表頭端稱爲棧底。不含元素的空表稱爲空棧數組

特色:進棧操做:棧底元素先進棧,棧頂元素後進棧;ide

出棧操做:棧頂元素先出棧,棧底元素後出棧;指針

總結:棧的修改是按照後進先出的原則進行的。it

3.1.2 棧的表示和實現

順序棧鏈棧class

順序棧:利用一組地址連續的存儲單元依次存放自棧底棧頂的數據元素,同時,附設指針top指示棧頂元素在順序棧中的位置。數據類型

一般棧空表示爲:top=0;總結

可是,一方面,若是以C語言做爲描述語言時,C語言中的數組下標約定從0開始,這樣設定(top=0)會帶來很大不便;數據

另外一方面,因爲棧在使用過程當中須要最大空間的大小很難肯定,因此,在初始化棧空時,不該該限定棧的最大容量。top

比較合理的作法爲:語言

  1. 先爲棧分配一個基本容量

  2. 在應用過程當中不斷擴大棧的容量空間(棧的空間不夠時)

作法:設兩個常量STACK_INIT_SIZE(存儲空間初始分配量)、STACKINCREMENT(存儲空間分配增量)

 

typedef struct{
    SElemType *base;
    SElemType *top;
    int stacksize;
}SqStack;

 

若base的值爲null,則棧結構不存在;

棧空標記:top=base;

鏈棧:……

相關文章
相關標籤/搜索