資料結構複習(三)棧和佇列(佇列)

2021-10-06 17:28:39 字數 1595 閱讀 9628

是只允許在一端進入,在另一端刪除的線性表。

插入:入隊,在隊尾插入,

刪除:出隊,在隊頭刪除

定義

#define maxsize 10

typeof struct

sqqueue;

初始化判空條件front為隊頭,rear為隊尾
void

initqueue

(sqqueue & q)

入隊
bool

enqueue

(sqqueue &q,elemtype x)

出隊
bool

dequeue

(sequeue &q,elemtype x)

由於順序儲存中,會出現上溢:佇列中只有乙個元素但是rear=front,因此無法用q.rear==q.front來判斷佇列滿,針對此情況,考慮迴圈佇列在迴圈佇列中,指標進一取餘賦值

初始的時候q.rearq.front

入隊q.rear=(q.rear+1)%maxsize

出隊q.front=(q.front+1)%maxsize

判斷滿隊條件(q.rear+1)%maxsizeq.front

佇列長度(q.rear+maxsize-q.front)%maxsize

出隊

bool

dequeue

(sqqueue &q,elemtype &x)

判斷已滿/已空

1.rear在front的後面==犧牲乙個單元格來區分rear和front

bool

ifempty

(sequeue &q)

2.定義size變數表示佇列長度,不犧牲單元格
#define maxsize = 10

typrof struct

sqqueue;

隊空條件q.size0

隊滿條件q.sizemaxsize;

佇列長q.size;

3.加入變數tag==不犧牲乙個單元格

當tag==0:最近進行一次刪除操作,

當tag==1:最近執行一次插入操作

每一次刪除操作成功都另tag0,反之1

只有刪除操作才能隊空,只有插入,才能隊滿

#define maxsize 10

elemtype struct

sqqueue;

隊滿條件:q.tag1 && q.rearq.front;

隊空條件:q.tag0 && q.rearq.front;

資料結構複習三 棧和佇列

先簡要介紹以下棧與佇列 棧 stack 是一種後進先出 lifo 的線性表,僅在表尾 即棧頂 進行插入或刪除操作,像火車排程的頭進尾出。佇列 queue 與棧相反,是一種先進先出 fifo 的線性表,只允許在一端進行插入,而在另一端進行刪除,允許插入的一端稱為隊尾,允許刪除的一端則稱為隊頭,就像日常...

資料結構 第三章 棧和佇列 佇列

筆記 資料結構 第三章 棧和佇列 佇列 佇列的邏輯結構 佇列 只允許在一端進行插入操作,而另一端進行刪除操作的線性表。空佇列 不含任何資料元素的佇列。允許插入 也稱入隊 進隊 的一端稱為隊尾,允許刪除 也稱出隊 的一端稱為隊頭。佇列的操作特性 先進先出 fifo,lilo 佇列的順序儲存結構及實現 ...

複習 資料結構 棧和佇列

鏈佇列 include include define elemtype char define maxsize 100 typedef struct node 定義節點型別 snode typedef struct lqueue void initqueue lqueue qu void enque...