无序队列:
package ch03Stack;
public class Queue {
// 数组
private long[] arr;
// 最大空间
private int maxsize;
// 有效长度
private int elems;
// 对头
private int font;
// 队尾
private int end;
// 构造方法
public Queue(int maxsize){
this.maxsize = maxsize;
arr = new long[maxsize];
elems = 0;
font = 0;
end = -1;
}
// 插入数据
public void insert(long value){
arr[++end] = value;
elems++;
}
// 取出数据
public long remove(){
elems--;
return arr[font++];
}
// 判断队列是否为空
public boolean isEmpty(){
return (elems == 0);
}
// 判断是否满了
public boolean isFull(){
return (elems == maxsize - 1);
}
// 返回有效元素大小
public int size(){
return elems;
}
}
测试:
package ch03Stack;
public class TestQuene {
public static void main(String[] args) {
Queue queue = new Queue(5);
queue.insert(50);
queue.insert(40);
queue.insert(30);
queue.insert(20);
queue.insert(10);
System.out.println(queue.isEmpty());
System.out.println(queue.isFull());
while(!queue.isEmpty()){
System.out.println(queue.remove());
}
queue.remove();
}
}
优先队列:
package ch03Stack;
public class PriorityQueue {
// 数组
private long[] arr;
// 最大空间
private int maxsize;
// 有效长度
private int elems;
// 构造方法
public PriorityQueue(int maxsize){
this.maxsize = maxsize;
arr = new long[maxsize];
elems = 0;
}
// 插入数据(大到小)
public void insert(long value){
int i;
for(i = 0; i < elems; i++){
if(arr[i] < value)
break;
}
for(int j = elems; j > i; j--){
arr[j] = arr[j - 1];
}
arr[i] = value;
elems++;
}
// 取出数据
public long remove(){
return arr[--elems];
}
// 判断队列是否为空
public boolean isEmpty(){
return (elems == 0);
}
// 判断是否满了
public boolean isFull(){
return (elems == maxsize);
}
// 返回有效元素大小
public int size(){
return elems;
}
}
测试:
package ch03Stack;
public class TestPriorityQueue {
public static void main(String[] args) {
PriorityQueue pq = new PriorityQueue(10);
pq.insert(50);
pq.insert(74);
pq.insert(25);
pq.insert(35);
pq.insert(82);
pq.insert(12);
while(!pq.isEmpty())
System.out.print(pq.remove() + " ");
}
}