Java中用动态数组实现队列(ArrayQueue)
动态数组——队列的顺序存储结构:
队列本质上就是一种特殊的线性表
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表,先进先
出的结构
元素插入叫入队,元素删除叫出队
用动态数组实现的线性表也称为顺序队列定义队列接口:
public interface Queue <E> {
public int getSize(); //获取队列元素个数
public boolean isEmpty(); //判空
public void enqueue(E e); //入队
public E dequeue(); //出队
public E getFront(); //获取队首元素
public E getRear(); //获取对位元素
public void clear(); //清空队列
}
队列中操作的对象是顺序表,具体实现代码链接:
https://blog.****.net/qq_43138320/article/details/88919467#comments
理解了队列的操作方法,在队列接口与表的基础上,队列的实现就简单了许多:
public class ArrayQueue<E> implements Queue<E>{
private ArrayList<E> list;
public ArrayQueue() {
this(10);
}
public ArrayQueue(int capacity) {
list = new ArrayList<E>();
}
@Override
public int getSize() {
return list.getSize();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public void enqueue(E e) {
list.addLast(e);
}
@Override
public E dequeue() {
return list.removeFirst();
}
@Override
public E getFront() {
return list.getFirst();
}
@Override
public E getRear() {
return list.getLast();
}
@Override
public void clear() {
list.clear();
}
@Override
public String toString() {
if(isEmpty()){
return "[]";
}
StringBuilder sb=new StringBuilder("[");
for(int i=0;i<list.getSize();i++){
if(i==list.getSize()-1){
sb.append(list.get(i)+"]");
}else{
sb.append(list.get(i)+",");
}
}
return sb.toString();
}
}