java数据结构——队列、循环队列

每天进步一点点,坚持就是成功。

1、队列

/**
 * 人无完人,如有bug,还请斧正
 * 继续学习Java数据结构————队列(列队) 
 * 队列和栈一样,都是使用数组,但是队列多了一个队头,队头访问数据,队尾插入数据
 * 队列的重要数据特性————先进先出
 * 入队、出队、队满、队空、查看
 */
public class Queue {
	private long arr[];
	private int Maxsize;// 最大容量
	private int front;// 队头,访问数据
	private int rear;// 队尾,插入数据
	private int elements;// 有效数据

	public Queue(int size) {
		this.Maxsize = size;
		arr = new long[Maxsize];
		front = 0;// 下标为0开始访问
		rear = -1;// 相当于栈的指针
		elements = 0;
	}
	// 有效数据
	public void show() {
		System.out.println(elements);
	}
	// 查看当前指向数据
	public long peek() {
		return arr[front];
	}
	// 入队
	public void add(int value) {
		arr[++rear] = value;
		elements++;
	}
	// 出队
	public long remove() {
		long value = arr[front++];// 队头从0开始
		elements--;
		return value;
	}
	// 队满
	public boolean isEmpty() {
		return elements == 0;
	}
	// 队空
	public boolean isFull() {
		return elements == Maxsize;
	}

	public static void main(String[] args) {
		Queue q = new Queue(3);
		q.add(52);
		q.add(2);
		q.add(6);
		
		while(!q.isEmpty()){
			System.out.print(q.remove()+" ");//先进先出
		}
		
	}

}

2、循环队列

队列存在弊端,超过最大长度就会抛出异常,这是不好的,所以我们必须了解循环队列,即使超过长度在添加也是可行的。

//循环队列
public class Queue {
	private long arr[];
	private int Maxsize;// 最大容量
	private int front;// 队头,访问数据
	private int rear;// 队尾,插入数据
	private int elements;// 有效数据

	public Queue(int size) {
		this.Maxsize = size;
		arr = new long[Maxsize];
		front = 0;// 下标为0开始访问
		rear = -1;// 相当于栈的指针
		elements = 0;
	}

	// 有效数据
	public void show() {
		System.out.println(elements);
	}

	// 查看当前指向数据
	public long peek() {
		return arr[front];
	}

	// 入队
	public void add(int value) {
		if (rear == arr.length - 1) {// rear初始值为-1,下标0-99
			rear = -1;// 重置队尾
		}
		arr[++rear] = value;// 这时候指向第一个位置
		elements++;
	}

	// 出队
	public long remove() {
		long value = arr[front++];// 先执行该句,front是否等于arr.length
		if (front == arr.length) {// 2+1=3
			front = 0;// 重置队头
		}
		elements--;
		return value;
	}

	// 队满
	public boolean isEmpty() {
		return elements == 0;
	}

	// 队空
	public boolean isFull() {
		return elements == Maxsize;
	}

	public static void main(String[] args) {
		Queue q = new Queue(3);
		q.add(52);
		q.add(2);
		q.add(6);
		q.add(6);
		q.add(6);

		while (!q.isEmpty()) {
			System.out.print(q.remove() + " ");// 先进先出
		}

	}

}

  

猜你喜欢

转载自www.cnblogs.com/hardhp74520/p/11305560.html