資料結構 佇列

2021-09-25 06:06:10 字數 1152 閱讀 8107

佇列

1. 佇列的定義:佇列是乙個有序列表(ordered list),而且所有新增動作只能在乙個特定的入口進行,刪除動作只能在乙個特定的出口進行。

2. 佇列的應用有:

3. 佇列的資料是有序列表, 而且是乙個接著乙個, 所以用陣列來表示佇列,按佇列所要存放的資料是文字或數字來定義佇列,例如文字時用 char 型別,數字時用 int 型別等。

如 char queue[100] 或 int queue[100]。佇列另外還需3個產量輔助其操作,乙個是佇列最大容量 maxq,另乙個是隊首位置 front,另乙個是隊尾位置 rear,這3者般是數字型別,一般 front 和 rear 的初始值是-1。

4. 佇列因為有入口和出口可以移動資料,所以佇列的基本操作有兩種:新增資料 addq 和刪除資料 delq。

5. 以陣列來表示的線性佇列,在 addq()演算法中, rear 會一直往後增加,當 rear ==maxq -1 時,表示佇列已滿,不能再加入資料;在 delq()演算法中,front 會一直往後增加, rear == front 時,表示佇列已空了,不能再刪除資料。

6. 除非這個佇列確實每個位置都放入了資料,才是「佇列已滿」,或佇列中沒有任何資料可供刪除時,才是「佇列已空」,否則佇列可以一直運轉,這種佇列結構稱為迴圈佇列(circular queue)。

7. 以陣列來表示的迴圈佇列,在addq()演算法中,rear 會一直增加,然後根據陣列大小取餘數,所以當(rear+1 % maxq)== front 時,即表示佇列已滿,不能再加入資料;在delq()演算法中,front 會一直往後增加, 然後根據陣列大小取餘數,當 rear == front 時,表示佇列已空了,不能再刪除資料。

8. 佇列結構經常用在計算機系統的運作中,例如 cpu 的時間安排、介面裝置的i/o中斷、作業系統(如windows)的事件處理(如按滑鼠鍵、移動滑鼠、鍵盤輸入等事件)、或者印表機列印佇列等。一般不會只用單一佇列,不會是「先到先處理」的方式,而是會同時應用多種策略,例如優先順序高者先執行,最久未被處理的先執行,處理量(處理時間)最少(短)者優先處理,所以佇列要稍加調整才能應對上述的問題。

9. 線性佇列和迴圈佇列只能有唯一的入口和唯一的出口,此稱為單向佇列(single-end-queue),佇列可加以變化成為兩端都可作為入口和出口的雙向佇列(double-end-queue, dqueue)。

資料結構 佇列

一 佇列的迴圈陣列實現。1 初始化 空佇列。令rear front 0。2 入佇列 約定rear指向佇列尾元素的下乙個位置。入佇列時,先判斷佇列是否已滿,而後將array rear x 然後rear 3 出佇列 約定front指向佇列的首元素位置。出佇列時,先判斷佇列是否為空,而後返回隊首元素re ...

資料結構 佇列

資料參考自 資料結構c 語言描述 佇列是一種先進先出的資料結構,這與棧正好相反。下例是簡單的queue實現 queue.h檔案 ifndef queue h define queue h include include 資料元素結構 自定義 struct datatype 佇列元素最大數 const...

資料結構 佇列

code for fun created by dream whui 2015 1 25 include stdafx.h include include using namespace std define true 1 define false 0 define ok 1 define erro...