泛型类
java编程完成泛型类CircularQueue(循环队列),CircularQueue的基本功能设计要求:创建循环队列、入队、出队、获取队头元素、判队空、获取队列元素个数。 public class CircularQueue<T> {private int front;
private int rear;
private int size;
private int capacity;
private T[] elements;
public CircularQueue(int capacity) {
this.capacity = capacity;
this.elements = (T[]) new Object;
this.front = 0;
this.rear = 0;
this.size = 0;
}
public void enqueue(T element) {
if (size == capacity) {
throw new IllegalStateException("Queue is full");
}
elements = element;
rear = (rear + 1) % capacity;
size++;
}
public T dequeue() {
if (size == 0) {
throw new IllegalStateException("Queue is empty");
}
T element = elements;
elements = null;
front = (front + 1) % capacity;
size--;
return element;
}
public T getFront() {
if (size == 0) {
throw new IllegalStateException("Queue is empty");
}
return elements;
}
public boolean isEmpty() {
return size == 0;
}
public int size() {
return size;
}
}
这段代码定义了一个泛型类CircularQueue,实现了循环队列的基本功能。循环队列通过数组实现,使用front和rear指针分别指向队头和队尾,size记录队列中元素的个数。在入队enqueue操作中,首先判断队列是否已满,然后将元素添加到rear指向的位置,并更新rear指针和size;在出队dequeue操作中,首先判断队列是否为空,然后取出front指向的元素,更新front指针和size。获取队头元素getFront、判队空isEmpty和获取队列元素个数size操作则比较简单,直接根据相应的条件进行判断或返回相应的值。 当然,以下是一个简单的泛型类CircularQueue的实现,满足上述的基本功能设计要求:
java
import java.util.NoSuchElementException;
public class CircularQueue<T> {
private Object[] queue;
private int head;
private int tail;
private int size;
private int capacity;
public CircularQueue(int capacity) {
this.capacity = capacity;
queue = new Object;
head = 0;
tail = 0;
size = 0;
}
public void enqueue(T item) {
if (size == capacity) {
throw new IllegalStateException("Queue is full");
}
queue = item;
tail = (tail + 1) % capacity;
size++;
}
public T dequeue() {
if (size == 0) {
throw new NoSuchElementException("Queue is empty");
}
T item = (T) queue;
head = (head + 1) % capacity;
size--;
return item;
}
public T peek() {
if (size == 0) {
throw new NoSuchElementException("Queue is empty");
}
return (T) queue;
}
public boolean isEmpty() {
return size == 0;
}
public int size() {
return size;
}
}
这个泛型类CircularQueue实现了循环队列的基本功能,包括创建循环队列、入队、出队、获取队头元素和判队空、获取队列元素个数。你可以根据这个基础上进行进一步扩展和优化。希望这个例子能够帮助你完成泛型类CircularQueue的基本功能设计。 我们可以根据你的需求创建一个泛型的循环队列类。下面是泛型类CircularQueue的一个基本实现:
public class CircularQueue<T> {
private T[] queue;
private int head;
private int tail;
private int size;
@SuppressWarnings("unchecked")
public CircularQueue(int capacity) {
queue = (T[]) new Object;
head = 0;
tail = 0;
size = 0;
}
public boolean enqueue(T element) {
if (size == queue.length) {
return false; // 队列已满
}
queue = element;
tail = (tail + 1) % queue.length;
size++;
return true;
}
public T dequeue() {
if (size == 0) {
return null; // 队列为空
}
T result = queue;
head = (head + 1) % queue.length;
size--;
return result;
}
public T getFront() {
if (size == 0) {
return null; // 队列为空
}
return queue;
}
public boolean isEmpty() {
return size == 0;
}
public int getSize() {
return size;
}
}
这个泛型类包含了以下方法:
- CircularQueue(int capacity): 创建指定容量的循环队列。
- enqueue(T element): 将元素添加到队列末尾,如果队列已满,返回false。
- dequeue(): 从队列头部删除元素并返回,如果队列为空,返回null。
- getFront(): 返回队列头部的元素,如果队列为空,返回null。
- isEmpty(): 判断队列是否为空,如果为空,返回true。
- getSize(): 返回队列中元素的个数。
请注意,这个循环队列的容量是固定的,如果你需要动态扩容的循环队列,需要进行适当的修改。
页:
[1]