在Java中,可以使用數(shù)組和循環(huán)來實(shí)現(xiàn)固定長度的隊(duì)列。下面是一個(gè)簡單的示例代碼:
public class FixedSizeQueue {
private int[] queue;
private int front;
private int rear;
private int size;
private int capacity;
public FixedSizeQueue(int capacity) {
this.capacity = capacity;
queue = new int[capacity];
front = 0;
rear = -1;
size = 0;
}
public void enqueue(int item) {
if (isFull()) {
throw new RuntimeException("Queue is full");
}
rear = (rear + 1) % capacity;
queue[rear] = item;
size++;
}
public int dequeue() {
if (isEmpty()) {
throw new RuntimeException("Queue is empty");
}
int item = queue[front];
front = (front + 1) % capacity;
size--;
return item;
}
public boolean isEmpty() {
return size == 0;
}
public boolean isFull() {
return size == capacity;
}
public int getSize() {
return size;
}
}
在這個(gè)示例中,我們使用一個(gè)數(shù)組來表示隊(duì)列,使用兩個(gè)指針front
和rear
來記錄隊(duì)列的前端和后端位置,使用一個(gè)變量size
來記錄隊(duì)列中的元素?cái)?shù)量,使用一個(gè)變量capacity
來記錄隊(duì)列的最大容量。
enqueue()方法用于向隊(duì)列中添加元素,首先檢查隊(duì)列是否已滿,如果已滿則拋出異常,否則將rear指針向后移動(dòng)一個(gè)位置,并將元素添加到新位置上。
dequeue()方法用于從隊(duì)列中刪除元素,首先檢查隊(duì)列是否為空,如果為空則拋出異常,否則將front指針向后移動(dòng)一個(gè)位置,并返回原先front指針位置上的元素。
isEmpty()方法用于檢查隊(duì)列是否為空,如果隊(duì)列中元素?cái)?shù)量為0,則返回true,否則返回false。
isFull()方法用于檢查隊(duì)列是否已滿,如果隊(duì)列中元素?cái)?shù)量等于最大容量,則返回true,否則返回false。
getSize()方法用于獲取隊(duì)列中的元素?cái)?shù)量。
使用示例:
FixedSizeQueue queue = new FixedSizeQueue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);
System.out.println(queue.getSize()); // 輸出:5
System.out.println(queue.dequeue()); // 輸出:1
System.out.println(queue.dequeue()); // 輸出:2
queue.enqueue(6);
queue.enqueue(7);
System.out.println(queue.getSize()); // 輸出:5
System.out.println(queue.isFull()); // 輸出:true
這段示例代碼演示了如何使用FixedSizeQueue類來創(chuàng)建一個(gè)固定長度為5的隊(duì)列,并對隊(duì)列進(jìn)行操作。