队列

队列:

队列也是一种线性结构,相比与其他线性结构,队列结构有其独特的运算规则,队列结构的逻辑特点就像是现实生活的排队,后来的站在队尾,先来的从队首离开,也就说队列是一种FIFO(先进先出)的数据结构。队列的存储结构也有两种(1)顺序存储结构,一维数组实现(2)链式存储结构,链表实现


队列的实现的关键:

队列相对于堆栈来说多了一个位置标志,那么对于双位置标志来说,怎样判断队列为空就是关键点。队首为front,队尾为rear,那么front==rear就是队列为空了么,并不是。此时front和rear都指向同一个元素,并不是队列为空。所以要引入队列长度,当队列长度为0,队列为空。


用java实现队列:

成员变量:

public class Queue {
	int length=50;//顺序结构数组长度
	int []array;//存储数组
	int front;//队首
	int rear;//队尾
	int queueLength;//队列长度}

构造函数:

rear=-1的原因:保证当从队尾添加第一个元素时,rear=0.

public Queue(){
		array=new int[length];
		front=0;//队首为0
		rear=-1;//队尾为-1
		queueLength=0;//
	}

判断是否为空:

public boolean isEmpty(){
		if(queueLength==0)return true;
		else return false;
		
	}

判断是否已满:

public boolean isFull(){
		if(rear==(length-1)) return true;
		else return false;
	}

还原标志位:

public void clear(){
		rear=-1;
		front=0;
	}

释放队列空间:

public void free(){
		array=null;
	}

进队列:

public int inQueue(int data){
		if (isFull()) {
			System.out.println("队列已满,不能入队");
			return 0;
		}//元素已满,入队失败。
		else{
			rear++;
			array[rear]=data;
			queueLength++;
			return 1;
			
			
		}
	}

出队列:

public int outQueue(){
		if(isEmpty()) {
			System.out.println("队列已空,不能出队");
			return 0;}
		else{
			int data=array[front];
			front++;
			queueLength--;
			return data;
		}
	}

打印队列中的数据:

public void traversal(){
		if(isEmpty()){
			System.out.println("这是一个空队列");
		}
		else{
		for(int i=front;i<=rear;i++){
			System.out.print(array[i]+" ");
		}
		System.out.println();}
	}







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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值