資料結構之佇列

2021-08-19 18:21:20 字數 1533 閱讀 4737

棧就相當往杯子裡放東西,而佇列就相當於往管子裡放水,只能這頭進,那頭出

佇列就是只允許在一段進行插入操作,另一端進行刪除操作的線性表

例如在a[10] 大小的陣列中設計佇列,那麼假設我們入隊3個 出隊2個

也就是 入隊順序 a[0] a[1] a[2] 是有元素的,然後出隊順序是 a[0] a[1] 這時候對頭元素是 a[2]

接著入隊順序就是 a[3] a[4] a[5] 出隊順序 a[2] a[3] 。。。。。。

可以看出來隊頭元素一直往後縮,那麼最終接過就是a[9]有元素,於是不能入隊了 因為陣列的大小就是10

但是a[9]以前還有地方,這樣就存在假溢位。

為了解決假溢位現象,我們提出另一種佇列迴圈佇列

迴圈佇列就是加入a[9] 滿了 ,那麼下乙個元素會存到陣列的第乙個位置即a[0] 然後a[1]

1.0 佇列的指標

分為隊頭指標front 和隊尾指標 rear

我習慣吧隊頭指標設為隊頭元素的前乙個位置,隊尾指標指向隊尾元素,這樣隊尾減去隊頭正好是佇列的長度

2.0 佇列的操作

3.0 迴圈佇列的兩個重要問題 —– 隊空和隊滿

當隊尾指標由指向a[9] 轉為a[0] 的時候 隊尾指標的值是 rear

隊空 :頭指標和尾指標在同一位置

佇列滿: 理論上是頭指標和尾指標在同一位置 但是這和判空衝突,所以我們浪費乙個儲存單元

這樣我們判斷隊滿的操作就是 front = rear + 1;

#include 

using

namespace

std;

const

int max = 10;

class queue

//入隊操作

void enqueue(int a)

//出隊操作

int dequeue()

//取隊頭元素 不刪除

int getqueue()

//判空操作

int isempty()

//判定佇列滿了

int isfull()

}; int main()

本人部落格多少c語言程式都是在devc 平台編譯通過,若是在vs2010等平台除錯 需要修改一下。這個自己修改吧,一點難度沒有。

說多了 沒用 直接上**

#include

using namespace std;

struct node;

class queue

//入隊操作

void enqueue(int a)

//出隊操作

int dequeue()

//取隊頭元素 不刪除

int getqueue()

//判空操作

int isempty()

//鏈佇列不存在佇列滿的情況 只能說你電腦記憶體空間沒了

}; int main()

資料結構之佇列

八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...

資料結構之佇列

與棧相反,佇列是一種先進先出的線性表,它只允許在表的一端進行,而在另一端刪除元 素。在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。1 鏈佇列 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱為鏈佇列,乙個鏈佇列顯然需要兩個分別指示對頭和隊尾的指標 分別稱為頭指 針和尾指標 才能唯一確定。這裡...

資料結構之佇列

一 佇列的介紹 佇列 queue 是一種線性儲存結構。它有以下幾個特點 1 佇列中資料是按照 先進先出 fifo,first in first out 方式進出佇列的。2 佇列只允許在 隊首 進行刪除操作,而在 隊尾 進行插入操作。佇列通常包括的兩種操作 入佇列 和 出佇列。1.佇列的示意圖 佇列中...