棧是一種特殊的線性表,即lifo線性表(last in first out,後進先出)
進行插入和刪除的一端是浮動端,通常稱為棧頂,並用一指標指示,稱作棧頂指標,而另一端是固定端,通常被稱為棧底。
initiate(s)初始化
push(s,elem)入棧
pop(s,elem)出棧
isempty(s)判斷是否為空
top(s)獲取棧頂元素
棧的順序儲存結構是用一組連續的儲存單元依次存放棧中的每個資料元素,並用起始端作為棧底。
型別定義
//棧的最大資料元素數目
#define max_size 10;
typedef
struct seqstackseqstack;
初始化順序棧
void
initiate
(seqstack ss)
判斷是否為空
int
isempty
(seqstack ss)
獲取棧頂元素
elemtype top
(seqstack ss)
入棧
void
push
(seqstack ss,elemtype elem)
出棧
elemtype pop
(seqstack ss)
順序棧的不足,棧的容量難以擴充。
使用鏈式儲存結構表示的棧稱作鏈棧。鏈棧通常用乙個無頭結點的單鏈表表示。
對於單鏈表來說,在首端插入刪除結點要比尾端更容易一些,所以,我們將單鏈表的首端作為棧頂端,將單鏈表的頭指標作為棧頂指標。
鏈式儲存適用於棧中資料元素數目變化較大和不清楚資料元素數目的情況。
結點結構
type struct lsnodelsnode;
鏈式棧
typedef
struct linkedstacklinkedstack;
獲取棧頂元素
elemtype top
(linkedstack ls)
判空函式
boolean isempty
(linkedstack ls)
入棧
void
push
(linkedstack ls,elemtype elem)
}
出棧
elemtype pop
(linkedstack ls)
}
將鍵盤輸入的字串行逆置輸出
演算法如下:
void
reverseread()
資料結構之堆疊與佇列
define maxsize 20 define error 1 typedef struct stack stack createstack int maxsize 生成空堆疊,其最大長度為maxsize int isfull stack s,int maxsize 判斷堆疊s是否已滿 else ...
資料結構 堆疊與佇列 2
佇列是一種特殊的線性表,它只允許在表的前端front進行刪除操作,在表的後端rear進行插入操作。進行插入操作的稱為隊尾rear,進行刪除操作的為隊頭。佇列中沒有元素時,稱為空佇列。佇列具有先進先出的特點。佇列空的條件 front rear 佇列滿的條件 rear maxsize 迴圈佇列 將儲存佇...
資料結構 堆疊與佇列複習大綱
1.1 棧的基本概念 棧 stack 只允許在一端進行插入或刪除操作的線性表 棧頂 top 線性表允許進行插入和刪除的那一端 特點 lifo last in first out 後進先出 操作特徵 1.2 棧的基本操作 1.3 佇列的基本概念 佇列 quene 是一種操作受限的線性表,只允許在表的一...