資料結構 佇列

2021-09-25 10:29:47 字數 2020 閱讀 7602

佇列本身是有序列表,若使用陣列的結構來儲存佇列的資料,則佇列陣列的宣告如下圖, 其中maxsize是該佇列的最大容量。

因為佇列的輸出、輸入是分別從前後端來處理,因此需要兩個變數frontrear分別記錄佇列前後端的下標,front 會隨著資料輸出而改變,而 rear則是隨著資料輸入而改變,

加入資料和取出資料的指標變化

實現的思路1:基於陣列實現

缺點:佇列只能使用一次,無法迴圈使用。

新增元素

//使用陣列模擬佇列

class

arrayqueue

//判斷佇列是否滿了

public

boolean

isfull()

//判斷佇列是否為空

public

boolean

isempty()

//新增資料到佇列

public

void

addqueue

(int n)

rear++

;//raer後移

arr[rear]

=n;}

//獲取資料

public

intgetqueue()

front++

;//front後移

return arr[front];}

//顯示佇列的所有資料

public

void

showqueue()

//遍歷陣列

for(

int i=

0;i//顯示佇列的頭部

public

intheadqueue()

//返回隊頭資料

return arr[front+1]

;}}

優化:使用環形陣列實現迴圈使用

思路:front 變數的含義做修改:front指向佇列的第乙個元素 。front的初始值=0

佇列滿的條件:(rear+1)%maxsize=front

隊列為空的條件:rear=front

佇列的有效個數:(rear+maxsize-front)%maxsize

//使用陣列模擬佇列

class

circlequeue

//判斷佇列是否滿了

public

boolean

isfull()

//判斷佇列是否為空

public

boolean

isempty()

//新增資料到佇列

public

void

addqueue

(int n)

//新增元素

arr[rear]

=n;//rear後移,考慮取模取模(防止陣列越界)

rear=

(rear+1)

%maxsize;

}//獲取資料

public

intgetqueue()

/* 1.先儲存要獲取的資料

2.把front向後移動,取模(防止陣列越界)

3.返回獲取的值

*/int num=arr[front]

; front=

(front+1)

%maxsize;

//front後移

return num;

}//顯示佇列的所有資料

public

void

showqueue()

//遍歷陣列

for(

int i=front;isize()

;i++)}

public

intsize()

//顯示佇列的頭部

public

intheadqueue()

//返回隊頭資料

return arr[front];}

}

資料結構 佇列

一 佇列的迴圈陣列實現。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...