棧和佇列也經常用到:
1、棧(1) 順序棧
常用操作:初始化、入棧、出棧、取得棧頂元素。
上點**:
#define stack_init_size 100 //初始容量
#define stackincrement 10 //容量增量
typedef struct
//sqsatck
status initstack(sqstack &s) //初始化棧
//initstack
status gettop(sqstack s,selemtype &e) //取棧頂元素
//gettop
status push(sqstack &s,selemtype e) //入棧
*s.top++=e;
return ok;
}//push
status pop(sqstack s,selemtype &e) //出棧
//pop
(2)雙向棧(空間共享)
兩個棧共享乙個儲存空間的好處是節省儲存空間,降低上溢發生的概率。
定義方式:#define stacksize 100
typedef structdustack;
(3)鏈棧
定義方式:typedef struct listack;
應用:字首、中綴、字尾表示式
2、佇列
(1)單鏈佇列
定義:typedef struct qnode
qnode,*queueptr;
typedef struct
linkqueue;
(2)迴圈佇列
頭指標(記為q.front):如果佇列不空,則指向當前隊首元素;
佇列空的條件:q.front=q.rear
佇列滿的條件:(q.rear+1)%maxsize=q.front (佇列實際容量 m=maxsize-1)
佇列長度:(q.rear-q.front+maxqsize)%maxsize;
入佇列:q.base[q.rear]=e;
q.rear=(q.rear+1)%maxsize;
出佇列:e=q.base[q.front];
q.front=(q.front+1)%maxsize;
資料結構 棧和佇列小結
1棧 1 棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表。我們把插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不包含任何元素的棧稱為空棧。棧又稱為後進先出 last in first out 的線性表,簡稱lifo結構。2 棧的儲存結構 由於棧也是線性表,因此線性表的儲存結構...
棧與佇列今日小結
1 棧 限定僅僅在表尾進行插入和刪除操作的線性表。後進先出 2 佇列 是只允許在一端進行插入操作 而在另一端進行刪除操作的線性表。先進先出 3 最先進棧的元素,不一定是最後出棧。因為順序進棧和出棧順序不一定。4 棧的順序儲存結構,就是申請乙個固定乙個陣列區域,標記位置top 沒有元素時候top 1 ...
棧和佇列 單調佇列 單調棧
講解部落格鏈結 一 單調棧 1 什麼是單調棧?單調棧是指乙個棧內部元素具有嚴格單調性 單調遞增,單調遞減 的一種資料結構。2 單調棧的兩個性質 滿足從棧頂到棧底具有嚴格的單調性 滿足後進先出的特徵,越靠近棧底的元素越早的進棧。3 元素進棧的過程 對於當前進棧元素x 如果x 棧頂元素,x 進棧。否則 ...