Java用循环数组实现队列

来源:互联网 发布:mac分屏功能怎么用 编辑:程序博客网 时间:2024/05/22 04:35

需要实现的方法:

public interface My_queue<T> {void add(T t);T remove();int size();boolean isEmpty();T front();}

定义自己的数组队列:

public class My_arrayQueue<T> implements My_queue<T>{private T[] data;private int size;private int front;private int rear;public My_arrayQueue() {data = (T[])new Object[3];size = 0;front = 0;rear = 0;}@Overridepublic void add(T t) {if(isFull()){resize();front = 0;}rear = (front+size)%data.length;data[rear] = t;size++;}@Overridepublic T remove() {if(isEmpty()){throw new RuntimeException("queue is empty!");}T tempData = data[front];data[front] = null;front = (front+1)%data.length;size--;return tempData;}@Overridepublic int size() {return size;}@Overridepublic boolean isEmpty() {return size == 0;}@Overridepublic T front() {if(isEmpty()){throw new RuntimeException("queue is empty!");}return data[front];}public boolean isFull(){return size == data.length;}public void resize(){T[] tmp = (T[])new Object[data.length*2];System.arraycopy(data, 0, tmp, 0, data.length);data = tmp;tmp = null;}}

测试类:

public class arrayTest {public static void main(String[] args){My_arrayQueue<Integer> arr = new My_arrayQueue<>();arr.add(1);arr.add(2);arr.add(3);arr.add(4);arr.add(5);arr.add(6);System.out.println(arr.size()+" "+arr.isEmpty());while(!arr.isEmpty()){Integer temp = arr.remove();System.out.println(temp);}}}






0 0