陣列模擬佇列(queue)

2021-09-27 09:18:28 字數 2146 閱讀 7763

佇列是乙個有序列表,可以用陣列或者鍊錶實現

遵循先進先出的原則:先存入佇列的資料,要先取出,後存入的資料,要後取出

使用陣列模擬佇列示意圖

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

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

當我們將資料存入佇列時成為addqueue,addqueue有兩個步驟。

<1.將為指標往後移rear++

<2.若尾指標rear小於佇列的最大下標maxsize,則將資料存入rear所指的陣列元素中,否則無法存入資料。

rear==maxsize-1 則對列為滿

個人理解

存值得時候rear後移,取值的時候front後移,初始值都為-1

所以存的方式為 arr[++rear]=i;//從arr的第乙個索引開始存

取的方式為return arr[++front];//從第乙個索引開始取(先進先出)

獲取頭部資料的方式為 return arr[front+1] //因為front是指向佇列的前乙個位置

1. 用陣列模擬乙個佇列,編寫乙個arrayqueue類

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