队列Queue
Posted hbc314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了队列Queue相关的知识,希望对你有一定的参考价值。
简介
- 是一种一种储存数据的容器,遵循着先进先出的原则,没有特定顺序,但可以在内部设定方法输出特定元素如首元素
- 包含两个指针,一个front指向第一个元素的前一个位置,一个rear指向最后一个元素,两者初始值均为-1
- front=rear时队列为空,rear=maxSize时队列为满
- 其他方法可以在类的内部定义方法即可
从零开始创建并调试一个队列(用数组实现)
1 //创建一个队列类 2 class ArrayQueue{ 3 //定义基本数据 4 private int maxSize; 5 private int front=-1; 6 private int rear=-1; 7 private int[] arr; 8 //定义构造方法 9 public ArrayQueue(int maxSize) { 10 this.maxSize=maxSize; 11 arr=new int[maxSize]; 12 front=-1; 13 rear=-1; 14 } 15 //定义判断是否为空的方法 16 public boolean isEmpty() { 17 return front==rear; 18 } 19 //定义判断是否满的方法 20 public boolean isFull() { 21 return rear==maxSize-1; 22 } 23 //定义添加元素的方法 24 public void addQueue(int n) { 25 if(isFull()) { 26 System.out.println("队列已满,无法加入新元素!!"); 27 } 28 rear++; 29 arr[rear]=n; 30 } 31 //定义取出元素的方法 32 public int getQueue() { 33 if(isEmpty()) { 34 throw new RuntimeException("队列空,无法取出数据!!"); 35 //此处就不需要return了,throw自带该功能 36 } 37 return arr[++front]; 38 } 39 //定义显示全部队列的方法 40 public void showAll() { 41 if(isEmpty()) { 42 throw new RuntimeException("队列为空!!"); 43 } 44 for(int i=front+1;i<=rear;i++) { 45 System.out.print(arr[i]); 46 } 47 } 48 //定义显示头部的方法 49 public void showHead() { 50 if(isEmpty()) { 51 throw new RuntimeException("队列为空!!"); 52 } 53 System.out.println("队列头部为:"+arr[front+1]); 54 } 55 }
1 public static void main(String[] args) { 2 // TODO Auto-generated method stub 3 ArrayQueue a1=new ArrayQueue(7); 4 for(int i=1;i<=7;i++) { 5 a1.addQueue(i); 6 } 7 a1.showAll(); 8 System.out.println(); 9 System.out.println(a1.getQueue()); 10 a1.showAll(); 11 System.out.println(); 12 a1.showHead(); 13 14 }
运行结果
1234567
1
234567
队列头部为:2
以上是关于队列Queue的主要内容,如果未能解决你的问题,请参考以下文章