小菜一步一步學資料結構之 六 佇列

2021-07-09 15:46:11 字數 1642 閱讀 9220

佇列是一種先進先出的線性表,它只允許在表的一段進行插入,而在另外一端刪除元素。

佇列的順序表示—用一維陣列base[m]

#define m 100//最大佇列長度 

空隊標誌:front==rear

入隊:base[rear++]=x;

出隊:x=base[front++];

但是這樣做存在乙個問題,如下:

rear=m時 rear=m時

再入隊—真溢位 再入隊—假溢位

該怎樣解決呢?

—-迴圈佇列

base[0]接在base[m-1]之後

若rear+1==m

則令rear=0;

實現:利用「模」運算

入隊:base[rear]=x;

rear=(rear+1)%m;

出隊:x=base[front];

front=(front+1)%m;

又出現另外乙個問題

解決方案:

1.另外設乙個標誌以區別隊空、隊滿

2.少用乙個元素空間:

隊空:front==rear

隊滿:(rear+1)%m==front

#define maxqsize 100

typedef structsqqueue;

迴圈佇列初始化

status initqueue(sqqueue &q)

迴圈佇列的長度

int queuelength(sqqueue q)
迴圈隊列入隊

status enqueue(sqqueue &q,qelemtype e)
順環佇列出隊

status dequeue(linkqueue &q,qelemtype &e)

小菜一步一步學資料結構之 六 佇列

佇列是一種先進先出的線性表,它只允許在表的一段進行插入,而在另外一端刪除元素。佇列的順序表示 用一維陣列base m define m 100 最大佇列長度 空隊標誌 front rear 入隊 base rear x 出隊 x base front 但是這樣做存在乙個問題,如下 rear m時 r...

一步一步學Remoting之六 事件

我們先來改造一下上次的程式,為上次的主線程方法新增事件,能不斷的引發事件來匯報處理的進度 public class myeventargs public myeventargs intrate public class myobject console.writeline 主線程方法結束 prote...

一步步學資料結構與演算法 09 佇列

1.先進者先出,這就是典型的 佇列 結構。2.支援兩個操作 入隊enqueue 放乙個資料到隊尾 出隊dequeue 從隊頭取乙個元素。3.所以,和棧一樣,佇列也是一種操作受限的線性表。1.佇列api public inte ce queue2.陣列實現 順序佇列 public class arra...