Java中的队列实现

时间:2020-02-23 14:34:24  来源:igfitidea点击:

在本教程中,我们将看到如何在Java中使用数组实现 Queue(队列)

Queue(队列)是抽象的数据类型,首先在第一(FIFO 先进先出)行为中首先演示。
我们将使用数组实施相同的行为。

虽然Java提供了所有抽象数据类型的实现,但是

Stack,队列和链接列表,但它始终是了解基本数据结构并自己实现它们。

请注意 Array实施 Queue本质上不是动态的。

队列中有两个最重要的操作:
入列:当我们将元素插入队列时的操作。
出列:当我们从队列中删除元素时的操作。

Java程序使用数组实现队列:

package org.igi.theitroad;
 
public class QueueUsingArrayMain {
 
	private int capacity;
	int queueArr[];
	int front;
	int rear;
	int currentSize = 0;
 
	public QueueUsingArrayMain(int sizeOfQueue) {
		this.capacity = sizeOfQueue;
		front = 0;
		rear = -1;
		queueArr = new int[this.capacity];
	}
 
	/**
	 * this method is used to add element in the queue
	 * 
	 * @param data
	 */
	public void enqueue(int data) {
		if (isFull()) {
			System.out.println("Queue is full!! Can not add more elements");
		} else {
			rear++;
			if (rear == capacity - 1) {
				rear = 0;
			}
			queueArr[rear] = data;
			currentSize++;
			System.out.println(data + " added to the queue");
		}
	}
 
	/**
	 * This method removes an element from the front of the queue
	 */
	public void dequeue() {
		if (isEmpty()) {
			System.out.println("Queue is empty!! Can not dequeue element");
		} else {
			front++;
			if (front == capacity - 1) {
				System.out.println(queueArr[front - 1] + " removed from the queue");
				front = 0;
			} else {
				System.out.println(queueArr[front - 1] + " removed from the queue");
			}
			currentSize--;
		}
	}
 
	/**
	 * This method is use to check if element is full or not
	 * 
	 * @return boolean
	 */
	public boolean isFull() {
		if (currentSize == capacity) {
			return true;
		}
		return false;
	}
 
	/**
	 * This method is use to check if element is empty or not
	 * 
	 * @return
	 */
	public boolean isEmpty() {
 
		if (currentSize == 0) {
			return true;
		}
		return false;
	}
 
	public static void main(String a[]) {
 
		QueueUsingArrayMain queue = new QueueUsingArrayMain(5);
		queue.enqueue(6);
		queue.dequeue();
		queue.enqueue(3);
		queue.enqueue(99);
		queue.enqueue(56);
		queue.dequeue();
		queue.enqueue(43);
		queue.dequeue();
		queue.enqueue(89);
		queue.enqueue(77);
		queue.dequeue();
		queue.enqueue(32);
		queue.enqueue(232);
	}
}

运行上面的程序时,我们将得到以下输出:

6 added to the queue
6 removed from the queue
3 added to the queue
99 added to the queue
56 added to the queue
3 removed from the queue
43 added to the queue
99 removed from the queue
89 added to the queue
77 added to the queue
56 removed from the queue
32 added to the queue
232 added to the queue