用java语言写一个环形队列

package com.sunny.queue;

import java.util.ArrayList;

/** * 环形队列 * @author zhangdong * */ public class MyQueue<T> { //存储元素的队列数组 private Object[] queueArray; //队列的头 private int head; //队列的尾 private int tail; //队列中元素的个数 private int queueArrayLength; //队列的容量 private int queueArrayCapacity; public MyQueue(int queueArrayCapacity){ this.queueArrayCapacity = queueArrayCapacity; clearQueue(); } /** * 清空队列 */ public void clearQueue(){ head = 0; tail = 0; queueArrayLength = 0; queueArray = new Object[queueArrayCapacity]; } /** * 判断队列是否为空 */ private boolean isEmpty(){ return queueArrayLength == 0; } /** * 判断队列是不是满的 */ private boolean isFull(){ return queueArrayLength == queueArrayCapacity; } /** * 获得队列中元素的数量 */ public int getQueueLength(){ return queueArrayLength; } /** * 新元素入队 */ public boolean enQueue(T element){ if (isFull()) { return false; } queueArray[tail++] = element; tail = tail % queueArrayCapacity; queueArrayLength++; return true; } /** * 出队 */ public T deQueue(){ if (isEmpty()) { return null; } Object element = queueArray[head]; T t = (T)element; queueArray[head++] = null; head = head % queueArrayCapacity; queueArrayLength–; return t; } /** * 遍历整个队列 */ public void traversalQueue(){ for(int i=head;i<head+queueArrayLength;i++){ Object element = queueArray[i%queueArrayCapacity]; System.out.println(element); } } }

点赞