队列
- 第一个进去,第一个出来
数组模拟队列思路
- 队列本身是有序数列
- 队列的输出、输入分别是前后端处理的
package com.datastructure.day1;
import java.util.Scanner;
class test{
public static void main(String[] args) {
Queue queue = new Queue(3);
char key = ' ';
Scanner scanner = new Scanner(System.in);
boolean loop = true;
while(loop){
System.out.println("s(show)");
System.out.println("e(exit)");
System.out.println("a(add)");
System.out.println("g(get)");
System.out.println("h(head)");
key = scanner.next().charAt(0);
switch (key){
case 's':queue.showQueue();break;
case 'a':
int value = scanner.nextInt();
queue.addQueue(value);break;
case 'g':
try {
System.out.printf("%d",queue.getQueue());
}catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'h':
try {
System.out.println(queue.headQueue());
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
case 'e':
scanner.close();
loop = false;
return;
}
}
}
}
public class Queue {
private int maxSize;
private int front;
private int rear;
private int[] numbers;
public Queue(int maxSize){
this.maxSize = maxSize;
numbers = new int[maxSize];
front = -1;
rear = -1;
}
public boolean isFull(){
return rear == maxSize-1;
}
public boolean isEmpty(){
return rear == front;
}
public void addQueue(int number){
if (isFull()){
System.out.println("存满了!");
return;
}
rear++;
numbers[rear] = number;
}
public int getQueue(){
if (isEmpty()){
throw new RuntimeException("队列为空,不能取数据");
}
front++;
return numbers[front];
}
public void showQueue(){
if (isEmpty()){
System.out.println("队列为空,没有数据!");
return;
}
for (int i = 0 ; i < numbers.length ; i++){
System.out.printf("numbers[%d] = %d\n",i,numbers[i]);
}
}
public int headQueue(){
if (isEmpty()){
throw new RuntimeException("队列为空,没有数据");
}
return numbers[front + 1];
}
}