基於陣列實現佇列結構

2021-09-28 15:33:32 字數 1988 閱讀 6317

package com.hand.deque;

/** *

* 基於陣列實現的一次性佇列

*/public class arrayqueue

/*** 佇列是否已滿

** @return

*/public boolean isfull()

/*** 佇列是否為空

** @return

*/public boolean isempty()

/*** 向佇列中新增元素

** @param n

*/public void addqueue(int n)

rear++;

data[rear] = n;

}/**

* 取出佇列的頭元素

** @return

*/public int getqueue()

front++;

return data[front];

}/**

* 檢視佇列中的全部的資料

*/public void showqueue()

for (int i = 0; i < data.length; i++)

}/**

* 檢視佇列的第乙個元素

** @return

*/public int headqueue()

return data[front + 1];

}}

package com.hand.deque;

/** * 基於陣列的環形佇列

* ** 約定如下:

* front 指向佇列的第乙個元素 array[front]為佇列的第乙個元素 front的初始值為0

* rear 指向佇列的最後乙個元素的後乙個位置 rear的初始值為0

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

* 佇列空的條件: front == rear

* 佇列中有效資料個數: ( rear + maxsize - front ) % maxsize

* * 尾索引的下乙個為頭索引時表示佇列滿 即將佇列容量空出乙個作為約定。

*/public class circlequeue

/*** 判斷佇列是否已滿

** @return

*/public boolean isfull()

/*** 佇列是否為空

** @return

*/public boolean isempty()

/*** 向佇列中新增元素

** @param n

*/public void addqueue(int n)

//直接將資料加入

data[rear] = n;

//將資料後移 後移動時不可越界 需要加取模

rear = (rear + 1) % maxsize;

}/**

* 取出佇列的頭元素

** @return

*/public int getqueue()

//儲存值到乙個臨時變數

int value = data[front];

//front後移 後移動時不可越界 需要加取模

front = (front + 1) % maxsize;

return value;

}/**

* 檢視佇列中的全部的資料

*/public void showqueue()

//從front開始遍歷 遍歷指定個數的元素

for (int i = front; i < front + size; i++)

}/**

* 檢視佇列的第乙個元素

** @return

*/public int headqueue()

//直接返回

return data[front];

}}

基於陣列實現的佇列

author qcg version 2019 5 13.description 基於陣列實現的佇列 佇列的型別 順序佇列 鏈式佇列 迴圈佇列 阻塞佇列 併發佇列 public class myarrayqueue 入隊 param item 入隊元素 return 是否成功 public bool...

基於陣列實現阻塞佇列

基於陣列實現的話,需要額外兩個指標,乙個指向頭元素,乙個指向尾元素。出的時候從頭元素出去,入的時候從尾元素入。即出的時候tail指標 1,入的時候尾指標 1 因此使用乙個環形佇列最好,不會浪費空間也不需要挪動元素位置。因為是環形佇列,因此tail在最後乙個位置的時候,再進來乙個元素,如果佇列不滿,就...

佇列 陣列結構實現(迴圈佇列)

當元素較少時 tail位置在front後面 迴圈佇列與普通佇列出隊操作一樣,入隊的元素將會放在tail的位置上,隨後執行tail 操作 出隊時front位置上的元素將會置null,隨後執行front 操作 此時仍能保持著tail位置在front後面的狀態,如下圖所示 當元素繼續新增,最後乙個元素將放...