佇列本身是有序列表,若使用陣列的結構來儲存佇列的資料,則佇列陣列的宣告如下圖, 其中maxsize是該佇列的最大容量。
因為佇列的輸出、輸入是分別從前後端來處理,因此需要兩個變數front及rear分別記錄佇列前後端的下標,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...