赞
踩
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表
队列也是一种线性结构;
队列是一种先进先出(First In First Out)的数据结构;
队列的描述如下图:
先定义一个接口Interface
public interface Queue<E> extends Iterable<E>{ //获取队列中元素的个数 int getSize(); //判断队列是否为空 boolean isEmpty(); //入队一个元素 void enqueue(E e); //出队一个元素 E dequeue(); //获取队头 E getFront(); //获取队尾 E getRear(); //清空队列 void clear(); }
实现基于ArrayList的ArrayQueue类,然后写出其构造方法,再对接口中的方法进行实现,在这给出了入队和出队的示意图,以便理解(如下图所示)
队列代码实现
public class ArrayQueue<E> implements Queue<E> { private ArrayList<E> list; //无参构造函数 public ArrayQueue(){ list=new ArrayList<>(); } //获取元素个数 @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() { StringBuilder sb=new StringBuilder(); sb.append(String.format("ArrayQueue: %d/%d\n",getSize(),list.getCapacity())); sb.append('['); if(isEmpty()){ sb.append(']'); }else{ for(int i=0;i<list.getSize();i++){ sb.append(list.get(i)); if(i==list.getSize()-1){ sb.append(']'); }else{ sb.append(','); } } } return sb.toString(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。