佇列是乙個有序列表,可以用陣列或者鍊錶實現
遵循先進先出的原則:先存入佇列的資料,要先取出,後存入的資料,要後取出
使用陣列模擬佇列示意圖
佇列本身是有序列表,如果使用陣列的結構來儲存佇列的資料,則佇列陣列的宣告如上圖,maxsize是佇列的最大容量。
因為佇列的的輸出、輸入分別從前後端來處理,所以需要兩個變數fornt個rear分別記錄前後端的下標,front會隨著資料輸出而改變,而rear會隨著資料輸入而改變。
當我們將資料存入佇列時成為addqueue,addqueue有兩個步驟。
<1.將為指標往後移rear++
<2.若尾指標rear小於佇列的最大下標maxsize,則將資料存入rear所指的陣列元素中,否則無法存入資料。
rear==maxsize-1 則對列為滿
個人理解
存值得時候rear後移,取值的時候front後移,初始值都為-11. 用陣列模擬乙個佇列,編寫乙個arrayqueue類所以存的方式為 arr[++rear]=i;//從arr的第乙個索引開始存
取的方式為return arr[++front];//從第乙個索引開始取(先進先出)
獲取頭部資料的方式為 return arr[front+1] //因為front是指向佇列的前乙個位置
class arrayqueue
2. 建立佇列構造器
//建立佇列構造器
public arrayqueue(int arrmaxsize)
3. 判斷佇列是否為滿
//判斷佇列是否為滿
public boolean isfull()
4. 判斷佇列是否為空
//判斷佇列是否為空
public boolean isempty()
5. 新增資料到佇列中
//新增資料到佇列
public void addqueue(int n)
rear++;
arr[rear]=n;
}
6. 獲取佇列資料(出佇列)
//獲取佇列資料,出佇列
public int getqueue()
front++;
return arr[front];
}
7. 顯示佇列
//顯示佇列
public void showqueue()
for (int i = 0; i < arr.length; i++)
}
8. 顯示佇列頭資料
//顯示佇列頭資料(不是取資料)
public int headqueue()
return arr[front+1];
}
9. 在主方法中測試
public static void main(string args) catch (exception e)
break;
case "h":
try catch (exception e)
break;
case "e":
scanner.close();
loop=false;
break;}}
system.out.println("程式退出");
}
這個陣列使用一次就不能再使用,不能復用
將這個陣列改造成乙個環形的佇列,迴圈使用
詳情請看下篇文章
陣列模擬佇列
1.佇列本身是有序列表,若使用陣列的結構來儲存佇列的資料,則佇列陣列的宣告如下圖,其中 maxsize 是該隊 列的最大容量。2.因為佇列的輸出 輸入是分別從前後端來處理,因此需要兩個變數 front 及 rear 分別記錄佇列前後端的下標,front 會隨著資料輸出而改變,而 rear 則是隨著資...
陣列模擬佇列
指標位置 front 指向佇列的第乙個元素,也就是說front就是 陣列的第乙個元素。front的初始值 0。rear 指向佇列的最後乙個元素的後乙個位置.因為希望空出 乙個空間做為約定。rear 的初始值 0。判空條件if front rear 佇列滿判斷條件if rear maxsize 1 有...
陣列模擬佇列
佇列是乙個有序列表,可以用陣列或是鍊錶來實現。遵循先入先出的原則。即 先存入佇列的資料,要先取出。後存入的要後取出 檢視佇列頭資訊 trycatch exception e break case e 退出 scanner.close loop false break default break sy...