数据结构——队列(GIF图解)

一、队列的定义

队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表
队列也是一种线性结构;
队列是一种先进先出(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<>();}//获取元素个数@Overridepublic int getSize() {return list.getSize();}
//判断队列是否为空@Overridepublic boolean isEmpty() {return list.isEmpty();}
//进队@Overridepublic void enqueue(E e) {list.addLast(e);}
//出队@Overridepublic E dequeue() {return list.removeFirst();}
//获取队头@Overridepublic E getFront() {return list.getFirst();}
//获取队尾@Overridepublic E getRear() {return list.getLast();}
//清空队@Overridepublic void clear() {list.clear();}
//自定义格式打印元素@Overridepublic 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();}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部