資料結構(C 3 2佇列

2021-10-07 23:50:19 字數 2031 閱讀 2135

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 ...