欢迎访问宙启技术站
智能推送

在Java中实现队列操作的函数

发布时间:2023-06-08 23:26:39

队列是一种常见的数据结构,它按照FIFO(先进先出)原则进行插入和删除操作。队列通常用于模拟排队等各种场景。在Java中,我们可以使用数组或链表等数据结构实现队列。本文将介绍如何使用数组实现队列,并提供队列操作的函数实现。

使用数组实现队列

队列可以用数组来实现。数组中的元素按FIFO顺序排列,队列的头部在数组的前面,队列的尾部在数组的后面。为了实现数组队列,我们需要定义两个指针,一个指向头部,一个指向尾部。当对队列进行插入操作时,将元素插入到尾部,然后将“尾部指针”向后移动一位;当对队列进行删除操作时,将元素删除头部,然后将“头部指针”向后移动一位。

队列操作的函数实现

下面是使用数组实现队列的Java函数实现,包括插入、删除、查看队列头部元素、查看队列长度、判断队列是否为空等操作。

public class ArrayQueue {
	private int maxSize; // 队列最大容量
	private int front; // 队列头部指针
	private int rear; // 队列尾部指针
	private int[] array; // 队列数组

	// 初始化队列
	public ArrayQueue(int size) {
		maxSize = size;
		array = new int[maxSize];
		front = 0;
		rear = -1;
	}

	// 判断队列是否为空
	public boolean isEmpty() {
		return (front == rear + 1);
	}

	// 判断队列是否已满
	public boolean isFull() {
		return (rear == maxSize - 1);
	}

	// 插入元素到队列尾部
	public void enqueue(int data) {
		if (isFull()) {
			System.out.println("队列已满!");
			return;
		}
		rear++;
		array[rear] = data;
	}

	// 删除队列头部元素
	public int dequeue() {
		if (isEmpty()) {
			System.out.println("队列为空!");
			return -1;
		}
		int temp = array[front];
		front++;
		return temp;
	}

	// 返回队列头部元素
	public int peek() {
		if (isEmpty()) {
			System.out.println("队列为空!");
			return -1;
		}
		return array[front];
	}

	// 返回队列长度
	public int size() {
		return (rear - front + 1);
	}

	// 打印队列
	public void display() {
		if (isEmpty()) {
			System.out.println("队列为空!");
			return;
		}
		for (int i = front; i <= rear; i++) {
			System.out.print(array[i] + " ");
		}
		System.out.println();
	}
}

在上面的代码中,我们使用了maxSize、front和rear三个私有成员变量来记录队列的最大容量、队列头部和队列尾部在数组中的位置,并使用了一个int类型的数组array作为队列的存储空间。接下来,我们针对队列的各种操作进行一一解析。

初始化队列

在ArrayQueue函数构造器中,我们需要指定队列的最大容量size,并初始化队列的各个成员变量。具体代码如下:

public ArrayQueue(int size) {
	maxSize = size;
	array = new int[maxSize];
	front = 0;
	rear = -1;
}

判断队列是否为空

如果队列头部指针等于尾部指针加1,即front==rear+1,则队列为空;反之,队列非空。代码如下:

public boolean isEmpty() {
	return (front == rear + 1);
}

判断队列是否已满

如果队列尾部指针等于最大容量减一,即rear==maxSize-1,则队列已满;反之,队列未满。代码如下:

public boolean isFull() {
	return (rear == maxSize - 1);
}

插入元素到队列尾部

我们需要先判断队列是否已满,然后在队列尾部插入元素,并将尾部指针向后移动一位。代码如下:

public void enqueue(int data) {
	if (isFull()) {
		System.out.println("队列已满!");
		return;
	}
	rear++;
	array[rear] = data;
}

删除队列头部元素

我们需要先判断队列是否为空,然后删除队列头部元素,并将头部指针向后移动一位。代码如下:

public int dequeue() {
	if (isEmpty()) {
		System.out.println("队列为空!");
		return -1;
	}
	int temp = array[front];
	front++;
	return temp;
}

返回队列头部元素

我们需要先判断队列是否为空,然后返回队列头部元素。代码如下:

public int peek() {
	if (isEmpty()) {
		System.out.println("队列为空!");
		return -1;
	}
	return array[front];
}

返回队列长度

我们可以用队列尾部指针减去头部指针再加一的方式来返回队列的实际长度。具体代码如下:

public int size() {
	return (rear - front + 1);
}

打印队列

我们可以遍历队列数组来打印队列中的元素。如果队列为空,可以输出相应提示信息。具体代码如下:

public void display() {
	if (isEmpty()) {
		System.out.println("队列为空!");
		return;
	}
	for (int i = front; i <= rear; i++) {
		System.out.print(array[i] + " ");
	}
	System.out.println();
}

以上就是使用数组实现队列的Java函数,可以根据实际需要进行调用。