棧:限定僅在表尾進行插入或刪除操做的線性表;表尾端稱爲棧頂,表頭端稱爲棧底。不含元素的空表稱爲空棧。數組
特色:進棧操做:棧底元素先進棧,棧頂元素後進棧;ide
出棧操做:棧頂元素先出棧,棧底元素後出棧;指針
總結:棧的修改是按照後進先出的原則進行的。it
順序棧和鏈棧class
順序棧:利用一組地址連續的存儲單元依次存放自棧底到棧頂的數據元素,同時,附設指針top指示棧頂元素在順序棧中的位置。數據類型
一般棧空表示爲:top=0;總結
可是,一方面,若是以C語言做爲描述語言時,C語言中的數組下標約定從0開始,這樣設定(top=0)會帶來很大不便;數據
另外一方面,因爲棧在使用過程當中須要最大空間的大小很難肯定,因此,在初始化棧空時,不該該限定棧的最大容量。top
比較合理的作法爲:語言
先爲棧分配一個基本容量
在應用過程當中不斷擴大棧的容量空間(棧的空間不夠時)
作法:設兩個常量STACK_INIT_SIZE(存儲空間初始分配量)、STACKINCREMENT(存儲空間分配增量)
typedef struct{ SElemType *base; SElemType *top; int stacksize; }SqStack;
若base的值爲null,則棧結構不存在;
棧空標記:top=base;
鏈棧:……