package datastruct;
import java.util.Arrays;
import java.util.Comparator;
/**
* 用数组模拟 优先级队列 优先级高的排前、先出 线性表结构
* 类似使用了比较器的 TreeSet、TreeMap
*/
public class SimulatePriorityQueue {
public static void main(String[] args) {
SimulatePriorityQueue queue = new SimulatePriorityQueue(4);
// SimulateQueue queue = new SimulateQueue();
// System.out.println("取出元素:" + queue.remove());
queue.insert(1);
queue.insert(3);
queue.insert(2);
queue.insert(5);
queue.insert(4);
System.out.println("size:" + queue.size());
System.out.println("peek:" + queue.peek());
System.out.println("取出元素:" + queue.remove());
System.out.println("取出元素:" + queue.remove());
System.out.println("取出元素:" + queue.remove());
System.out.println("取出元素:" + queue.remove());
// System.out.println("取出元素:" + queue.remove());
System.out.println("size:" + queue.size());
System.out.println();
}
private int mSize = 3; //大小
private int[] mArray; //数组
private int mNextItem; //下一个位置,也可当作 当前的元素数
public SimulatePriorityQueue() {
mArray = new int[mSize];
mNextItem = 0;
}
public SimulatePriorityQueue(int size) {
this.mSize = size;
mArray = new int[mSize];
mNextItem = 0;
}
/**
* 插入元素
* @param item
*/
public void insert(int item) {
if (!isFull()) {
mArray[mNextItem++] = item;
for (int i = 0; i < mNextItem; i++) {//冒泡排序
for (int j = 0; j < mNextItem - 1; j++) {
if (mArray[j] > mArray[j + 1]) {
mArray[j] = mArray[j + 1] + 0 * (mArray[j + 1] = mArray[j]);
System.out.println(Arrays.toString(mArray));
}
}
}
System.out.println(Arrays.toString(mArray));
} else {
System.out.println("----不能插入元素了,队列已满----");
}
}
/**
* 移出元素 先进先出
* @return
*/
public int remove() {
if (!isEmpty()) {
return mArray[--mNextItem];
} else {
throw new IllegalArgumentException("没有元素可以取出了");
}
}
/**
* 查看前面的元素
* @return
*/
public int peek() {
return mArray[mNextItem - 1];
}
/**
* 是否为空
* @return
*/
public boolean isEmpty() {
return mNextItem == 0;
}
/**
* 是否满
* @return
*/
public boolean isFull() {
return mNextItem == mSize;
}
/**
* size
* @return
*/
public int size() {
return mNextItem;
}
}
[1, 0, 0, 0] [1, 3, 0, 0] [1, 2, 3, 0] [1, 2, 3, 0] [1, 2, 3, 5] ----不能插入元素了,队列已满---- size:4 peek:5 取出元素:5 取出元素:3 取出元素:2 取出元素:1 size:0
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有