迴圈佇列 順序佇列

2021-09-10 07:53:11 字數 1199 閱讀 3213

在前兩篇中講述了順序佇列中的隊頭移動與不移動兩種順序佇列,今天討論順序佇列中的迴圈佇列,這種迴圈佇列是用一維陣列實現的。在隊頭移動的情況下,根據元素個數與佇列容量之間的數量關係來解決假溢位問題。

從上圖中我們可以理解為什麼這種佇列結構可以解決假溢位問題,但是隨之而來,我們要如何判定迴圈佇列已滿呢?

在此處我有三種辦法:

其一,犧牲乙個儲存單元,使得一旦插入時發現元素個數已經達到最大元素個數-1,便說明已滿。

其二,設定乙個標記,若已插入元素,設定為1,為插入元素,設定為0,在插入時,判斷標記的值。如下圖示。

其三,使用乙個計數器count,每次將要插入時,count++,判斷count與最大元素個數的大小,相等,表示已滿

在本文中,我使用第一種方法,以犧牲乙個儲存單元來解決佇列已滿問題。

//迴圈佇列

#includeusing namespace std;

typedef int typedata;

#define max_size 5

typedef class seqlist

//返回元素個數

int size() }

//入佇列

bool push_back(typedata data)

else if (rear == (max_size-1))

else

array[rear++] = data;

return true;

} //出佇列,隊頭

bool pop_front()

if (front == max_size)

else

front++;

return true;

} //列印

void 列印()

else

}~seqlist()

private:

typedata array[max_size];

int front;

int rear;

};void test()

int main()

佇列 順序迴圈佇列

順序佇列 sequence queue 用一片連續的儲存空間來儲存佇列中的資料元素.用一維陣列來存放順序佇列中的資料元素。隊頭位置設在陣列下標為 0 的端,用 front 表示 隊尾位置設在陣列的另一端,用 rear 表示。front 和 rear 隨著插入和刪除而變化。當隊列為空時,front r...

迴圈佇列 順序佇列(C )

佇列 queue 是一種限定訪問位置的線性變。他允許在表的一端插入,在另一端刪除。這個和計算機排程策略中的先來先服務fcfs first come first served 是一樣的。佇列中可以插入的一端為隊尾 rear 允許刪除的一端稱為隊頭 front 佇列也分為兩種,一種是用陣列的儲存表示,一...

佇列之順序佇列與迴圈佇列

一 佇列的概念 只能在表的一端進行插入操作,只能在表的另一端進行刪除操作,這種資料結構稱為 佇列。把允許插入的一端叫 隊尾 rear 允許刪除的一端叫 對頭 front 二 佇列的分類 佇列本身也是一種線性表,因而和線性表一樣也有順序和鏈式儲存結構兩種儲存方式。採用順序儲存結構實現的佇列稱為順序佇列...