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.youkuaiyun.com/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();
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值