⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arrayqueue.java

📁 这里面包含有栈
💻 JAVA
字号:
package org.huhuiyu.datastructures;

public class ArrayQueue {
	private int count;
	private int front; // 前端索引
	private int back; // 尾端索引
	private Object[] datas; // 队列数据

	public ArrayQueue(int size) {
		datas = new Object[size];
		clear();
	}

	/**
	 * 加入数据到队列
	 * 
	 * @param data
	 *            加入到队列的数据
	 */
	public void enqueue(Object data) {
		if (count == datas.length) {
			throw new IllegalStateException("队列已满!");
		}
		back = (back + 1) % datas.length; // 计算队列末端索引
		datas[back] = data; // 加入到队列末端
		count++;
	}

	/**
	 * 出队并返回出队的数据
	 * 
	 * @return 出队的数据
	 */
	public Object dequeue() {
		if (isEmpty()) {
			throw new IllegalStateException("队列是空的!");
		}
		front = (front + 1) % datas.length; // 计算队列前端索引
		Object data = datas[front]; // 获取队列前端数据
		datas[front] = null; // 置空数组数据
		count--;
		return data;
	}

	/**
	 * 查看排在队列最前端的数据
	 * 
	 * @return 排在队列最前端的数据
	 */
	public Object peek() {
		if (isEmpty()) {
			throw new IllegalStateException("队列是空的!");
		}
		return datas[front];
	}

	public void clear() {
		front = 0;
		back = 0;
		count = 0;
	}

	public boolean isEmpty() {
		return count == 0;
	}

	public int size() {
		return count;
	}

	public static void main(String[] args) {
		int length = 10;
		ArrayQueue queue = new ArrayQueue(length);
		for (int i = 0; i < length; i++) {
			queue.enqueue(i);
		}
		System.out.println(queue.dequeue());
		System.out.println(queue.dequeue());
		queue.enqueue(10);
		System.out.println(queue.peek());
		while (!queue.isEmpty()) {
			System.out.println(queue.dequeue());
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -