有序列表,可以用陣列或者鍊錶來實現
特點:先進先出
eg:銀行排號
陣列模擬佇列演算法**實現public
class
arrayqueuedemo
case
'a':
case
'g':
catch
(exception e)
break;}
case
'h':
catch
(exception e)
break;}
case
'e':
default
:break;}
}}}//
class
arrayqueue
//判斷是否為滿
public
boolean
isfull()
//判斷佇列是否為空
public
boolean
isempty()
//新增資料到佇列
public
void
addqueue
(int n)
rear++
; arr[rear]
= n;
}//出佇列
public
intgetqueue()
return arr[
++front];}
//顯示佇列所有資料
public
void
findallqueue()
for(
int i =
0;i//顯示佇列頭資料
public
intfindheadqueue()
return arr[front+1];}}
缺點:我們取出佇列,佇列是少了乙個元素,但是顯示還是原來的,剛取出的元素還被顯示了(事實上已經取出來了)我們的佇列沒有辦法實行環形,我們取出結束,不能再加元素了,也就是我們的頭指標沒有指向最初,不能復用
改進環形佇列取%front指向我們的第乙個元素下標,即arr【front】就是第乙個元素
front初始值為0
rear指向佇列的最後乙個元素的後面的乙個位置,空出乙個空間做約定
rear初始值為0
佇列滿時的條件
隊列為空,(rear+1)%maxsize = front
佇列的有效的資料個數為rear = front
(rear + maxsize - front)%maxsize
public
class
circlearrayqueuedemo
case
'a':
case
'g':
catch
(exception e)
break;}
case
'h':
catch
(exception e)
break;}
case
'f':
case
'e':
default
:break;}
}}}class
circlearrayqueue
//判斷是否滿
public
boolean
isfull()
//判斷佇列是否為空
public
boolean
isempty()
//新增資料到佇列
public
void
addcirclequeue
(int n)
//直接將資料加入
arr[rear]
= n;
//rear後移
rear =
(rear +1)
%maxsize;
}//出佇列
public
intgetcirclequeue()
//front直接指向我們佇列第乙個元素了
//1.先把front的值儲存一下,
//3.將儲存的變數返回
int value = arr[front]
; front =
(front+1)
%maxsize;
return value;
}//求出當前資料有效個數
public
intsize()
//顯示佇列所有資料
public
void
findallcirclequeue()
//從front開始遍歷,不應該是從0開始
//for
(int i =front ;i
size()
;i++
) system.out.
println
("輸出完畢");
}//顯示隊首
public
intfindcircleheadqueue()
return arr[front];}
}
資料結構筆記 佇列
佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出的線性表。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。如下圖所示 線性表有順序儲存和鏈式儲存,棧是線性表,所以有這兩種儲存方式。同樣,佇列作為一種特殊的線性表,也同樣存在這兩種儲存方式。佇列順序儲存的...
筆記 資料結構 佇列
特性 先進先出,不可根據索引查詢 介面inte ce iqueueds 屬性,佇列中的個數 int getlength 方法,佇列中的個數 bool isempty 佇列是否為空 void clear 清空佇列 void enqueue t item 入隊 t dequeue 出隊 t peek 觀...
資料結構筆記之佇列
佇列是只允許在一端進行插入 隊尾 而在另一端進行刪除 隊首 的線性表。先進入佇列的元素必然先離開佇列.即先進先出 fifo 順序佇列 define maxsize 50 佇列中元素最大個數 typedef struct sqqueue 迴圈佇列有乙個明顯的缺點就是假溢位,即佇列仍然有空間,但是由於隊...