数组实现队列

public class QueueArray{

    /** 数组 **/
    private String[] arr;

	/** 数组容量,队列就是在该数据上实现的,这个n标识的就是数据的大小。 和要实现的队列关系不大 **/
	private int n;
	
	/** 队列的开始角标 **/
	private int head = 0;

	/** 队列的末尾角标 + 1 **/
	private int tail = 0;

	/** 创建原始数据 **/
	public QueueArray(int captity){
		arr = new String[captity];
		n = captity;
	}
	
	/** 入队列 **/
	public boolean enqueue(String element){
		if(tail == n){
			/** 原始数据中的概念队列已经使用完毕 **/
			if(head == 0){
				/** 原始数据中已经全部被概念队列暂满,没有多余空间 **/
				return false;
			} else {
				/** 开始放进去的元素已经有出队列的了**/
				/** 这个时候需要挪一下队列在原始数组中的位置,参考后面的图 **/
				for(int i = head; i < tail; i++){
					arr[i - head] = arr[i];
					/** 原来的arr[i]不需要 = null了,队列内的数据都会被替换,arr数据多余队列的数据可以不用care **/
				}
				tail = tail -head;
				head = 0;
			}
		}

		arr[tail] = element;
		tail ++;
		return true;
	}

	public String dequeue(){
		if(head == tail){
			/** 队列已经为null了 **/
			return null;
		}
		String element = arr[head];
		head ++;
		return element;
	}
}

概念队列使用完毕后,队列移动模型图;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值