队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。
public class MyQueue<T>{
/**
* 使用数组作为底层存储
*/
private T[] elements;
public MyQueue() {
this.elements =(T[]) new Object[0];
}
/**
* 描述:入队列
*/
public void add(T t) {
//创建新数组
T[] newElements = (T[]) new Object[elements.length + 1];
//复制原数组数据到新数组
for (int i = 0; i < elements.length; i++) {
newElements[i] = elements[i];
}
//新增元素添加到新数组
newElements[elements.length] = t;
//替换旧数组
this.elements = newElements;
}
/**
* 描述:出队列
*/
public T poll() {
if (this.elements.length == 0) {
throw new RuntimeException("this queue is empty!");
}
T result = this.elements[0];
T[] newElements = (T[]) new Object[elements.length - 1];
//复制原数组数据到新数组
for (int i = 0; i < newElements.length; i++) {
newElements[i] = elements[i+1];
}
this.elements = newElements;
return result;
}
/**
* 是否是空
*/
public boolean isEmpty() {
return this.elements.length == 0;
}
/**
* 测试
*/
public static void main(String[] args) {
MyQueue<Integer> queue=new MyQueue();
queue.add(1);
queue.add(2);
System.out.println(queue.poll());
System.out.println(queue.poll());
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。