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後面的狀態,如下圖所示 當元素繼續新增,最後乙個元素將放...