1.只允許在一端進行插入操作,在另一端進行刪除操作的線性表;
2.隊尾:允許插入(入隊、進隊)的一端;
3.隊頭:允許刪除(出隊)的一端;
4.特性:先進先出
5.例子:銀行排隊、鍵盤緩衝區、作業系統的作業排程
1.設定隊頭、隊尾變數 rear 、front;
2.入隊rear+1、出隊rear-1;
3.約定:front指向隊頭元素的前乙個位置,rear指向隊尾元素的位置;
1.假溢位:佇列向陣列高階移動,元素插入到陣列下標的最大位置後,陣列低端還有空閒空間;
2.解決方案:頭尾相接的迴圈結構;
3.操作語句:rear = (rear + 1)%queuesize;
4.隊空:front = rear;
5.隊滿:(rear + 1) % queuesize = front;(浪費乙個陣列元素空間;
實現:
#include
using
namespace std;
const
int queue_size =
100;
template
<
typename datatype>
class
cirqueue
(4)出隊操作:判斷隊空情況,front迴圈意義上加1,讀取返回
template
<
typename datatype>
datatype cirqueue
::dequeue()
(5)取隊頭元素:判斷是否為隊空,否則返回結果
template
<
typename datatype>
datatype cirqueue
::gethead()
(6)判空操作:front 是否等於 rear;
1.加頭結點:空佇列與非空佇列一致;
2.設隊頭指標指向頭結點,隊尾指標指向終端結點;
實現:
#include
using
namespace std;
template
<
typename datatype>
struct node //結點
;template
<
typename datatype>
class
linkqueue
(1)建構函式:申請頭結點,隊頭指標與隊尾指標均指向頭結點
template
<
typename datatype>
linkqueue
::linkqueue()
(2)析構函式
template
<
typename datatype>
linkqueue::~
linkqueue()
}
(3)入隊操作
template
<
typename datatype>
void linkqueue
::enqueue
(datatype x)
(4)出隊操作:注意佇列長度等於1的情況
template
<
typename datatype>
datatype linkqueue
::dequeue()
(5)取隊頭元素:返回第乙個元素結點的資料域,即:front->next->data;
(6)判空操作:front是否等於rear;
1.時間複雜度均為o(1);
2.迴圈佇列需事先固定長度,有個數限制和浪費空間的問題;
3.鏈佇列需要指標域,產生結構性開銷;
資料結構(寒假小結) 3 2佇列
佇列 限定一端插入 另一端刪除的線性表。空隊 佇列中沒有元素時 隊頭 front 允許刪除的一端 隊尾 rear 允許插入的一端 ps 在佇列中依次加入元素a1,a2,an之後,a1是隊頭元素,an是隊尾元素。退出佇列的次序只能是a1,a2,an。1 初始化initiate q 構造乙個空佇列q。2...
資料結構5 佇列
5.1簡介 佇列 queue 和堆疊一樣是一種有序鍊錶,屬於抽象資料型別。不同在於是先進先出 first in,first out,fifo 堆疊只需要乙個top指標指向堆疊頂端即可,但是佇列必須使用front和rear兩個指標分別指向佇列的前端和尾端。基本操作 1 create 建立空佇列 2 a...
資料結構(二) 佇列
一 佇列定義 佇列是限定在一端進行插入,另一端進行刪除特殊線性表。二 佇列基本操作 入隊出隊 三 佇列例題 1.例1 舞伴配對問題 分析 這一題是一道經典的取模運算,每一次將編號往前加一位,到達n就取模。include include include include int main return ...