普通队列(数组实现)

package sparseArray;
/**
 * 队列:先入先出
 *数组实现的普通队列,存在问题,数据出队列,并没有把数据从队列中删除,只是移动了指针,所以队列不能复用。
 * @param <E>
 */
public class ArryQueue<E> {

	private int maxSize;  //表示队列(数组)最大容量
	private int front;		//队列头
	private int rear;		//队列尾
	private Object[] arr;		//存放数据的数组,用来模仿队列
	
	public ArryQueue(int arrMaxSize) {
		maxSize = arrMaxSize;
		arr = new Object[maxSize];
		front = -1;
		rear = -1;
	}
	//判断队列是否满
	public boolean isFull(){
		return rear==maxSize-1;
	}
	//判断队列是否为空
	public boolean isEmpty(){
		return rear == front;
	}
	//添加数据到队列
	public void addQueue(E e){
		if(isFull()){
			System.out.println("队列已满,无法添加数据!");
			return;
		}
		rear++;   //让rear后移
		arr[rear]=e;
	}
	
	public E getQueue(){
		if(isEmpty()){
			throw new RuntimeException("队列为空,不能取数据");
		}
		front++;
		return (E) arr[front];  //数据出队列,并没有把队列数据删除,只是移动了指针。
	}
	//显示队列的所有数据
	public void showQueue(){
		if(isEmpty()){
			System.out.println("队列为空,没有数据!");
			return;
		}
		for(int i = 0;i<arr.length;i++){
			System.out.printf("arr[%s]=%s\n",i,arr[i]);
			
		}
	}
	//显示队列头数据,注意不是取数据
	
	public E headQueue(){
		if(isEmpty()){
			throw new RuntimeException("队列为空,不能取数据");
		}
		return (E) arr[front + 1];
	}
	public static void main(String[] args) {
		ArryQueue queue = new ArryQueue(3);
		queue.addQueue("a");
		queue.addQueue("b");
		queue.addQueue("c");
		queue.addQueue("d");
		//queue.addQueue("e");
		queue.showQueue();
		
		int a=0;
		System.out.printf("%d",a++); //输出0,执行完后a=1
		int b=0;
		System.out.printf("%d",++b);//输出1,执行完后b=1

	}
	
	

}

队列已满,无法添加数据!
arr[0]=a
arr[1]=b
arr[2]=c
0
1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值