数组模拟队列(出列、入列)

  1 package com.coolzhu.Queue;
  2 
  3 import java.util.Scanner;
  4 
  5 //数组模拟队列
  6 class arrQueueDemo {
  7     public static void main(String[] args) {
  8         Scanner input = new Scanner(System.in);
  9         char key = ' ';//接收用户输入
 10         boolean loop = true;
 11         queue q = new queue(3);
 12         while (loop) {
 13             System.out.println("a:添加数据");
 14             System.out.println("b:显示所有数据");
 15             System.out.println("c:显示队列头数据");
 16             System.out.println("d:获取队列头数据");
 17             System.out.println("e:退出");
 18             System.out.print("输入要使用的功能:");
 19             key = input.next().charAt(0);
 20             switch (key) {
 21                 case 'a':
 22                     System.out.println("请输入添加的数据");
 23                     int data = input.nextInt();
 24                     q.addQueue(data);
 25                     break;
 26                 case 'b':
 27                     q.showQueue();
 28                     break;
 29                 case 'c':
 30                     q.showHeadQueue();
 31                     break;
 32                 case 'd':
 33                     int headQueue = q.getHeadQueue();
 34                     System.out.println("得到的头队列是:" + headQueue);
 35                     break;
 36                 case 'e':
 37                     loop=false;
 38                     input.close();
 39                     System.out.println("系统退出!");
 40                     break;
 41                 default:
 42                     System.out.println("请规范填写!");
 43             }
 44         }
 45     }
 46 
 47     static class queue {//队列类
 48         private int maxSize;//数组最大长度
 49         private int front;//队列头
 50         private int rear;//队列尾
 51         private int[] arr;//数组
 52 
 53         //构造函数,属性初始化
 54         public queue(int queueMaxSize) {
 55             maxSize = queueMaxSize;
 56             front = -1;
 57             rear = -1;
 58             arr = new int[maxSize];
 59         }
 60 
 61         //判断队列是否为空
 62         public boolean isEmpty() {
 63             return rear == front;
 64         }
 65 
 66         //判断队列是否满
 67         public boolean isFull() {
 68             return rear == maxSize - 1;
 69         }
 70 
 71         //添加数据
 72         public void addQueue(int data) {
 73             //首先需要判断队列是否为满状态!
 74             if (isFull()) {
 75                 System.out.println("队列已满,无法继续添加!");
 76                 return;
 77             }
 78             rear++;
 79             arr[rear] = data;
 80         }
 81 
 82         //显示队列中所有数据
 83         public void showQueue() {
 84             if (isEmpty()) {
 85                 System.out.println("没有数据!");
 86                 return;
 87             }
 88             for (int i = 0; i < arr.length; i++) {
 89                 System.out.println("第" + (i + 1) + "个数是:" + arr[i]);
 90             }
 91         }
 92 
 93         //获得队列头数据
 94         public int getHeadQueue() {
 95             if(isEmpty()){
 96                 System.out.println("队列中没有数据了!");
 97                 return 0;
 98             }
 99             front++;
100             return arr[front];
101         }
102             //显示队列头数据
103             public void showHeadQueue() {
104                 System.out.println(arr[front + 1]);
105             }
106         }
107     }

 

package com.coolzhu.Queue;

import java.util.Scanner;

//数组模拟队列
class arrQueueDemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
char key = ' ';//接收用户输入
boolean loop = true;
queue q = new queue(3);
while (loop) {
System.out.println("a:添加数据");
System.out.println("b:显示所有数据");
System.out.println("c:显示队列头数据");
System.out.println("d:获取队列头数据");
System.out.println("e:退出");
System.out.print("输入要使用的功能:");
key = input.next().charAt(0);
switch (key) {
case 'a':
System.out.println("请输入添加的数据");
int data = input.nextInt();
q.addQueue(data);
break;
case 'b':
q.showQueue();
break;
case 'c':
q.showHeadQueue();
break;
case 'd':
int headQueue = q.getHeadQueue();
System.out.println("得到的头队列是:" + headQueue);
break;
case 'e':
loop=false;
input.close();
System.out.println("系统退出!");
break;
default:
System.out.println("请规范填写!");
}
}
}

static class queue {//队列类
private int maxSize;//数组最大长度
private int front;//队列头
private int rear;//队列尾
private int[] arr;//数组

//构造函数,属性初始化
public queue(int queueMaxSize) {
maxSize = queueMaxSize;
front = -1;
rear = -1;
arr = new int[maxSize];
}

//判断队列是否为空
public boolean isEmpty() {
return rear == front;
}

//判断队列是否满
public boolean isFull() {
return rear == maxSize - 1;
}

//添加数据
public void addQueue(int data) {
//首先需要判断队列是否为满状态!
if (isFull()) {
System.out.println("队列已满,无法继续添加!");
return;
}
rear++;
arr[rear] = data;
}

//显示队列中所有数据
public void showQueue() {
if (isEmpty()) {
System.out.println("没有数据!");
return;
}
for (int i = 0; i < arr.length; i++) {
System.out.println("第" + (i + 1) + "个数是:" + arr[i]);
}
}

//获得队列头数据
public int getHeadQueue() {
if(isEmpty()){
System.out.println("队列中没有数据了!");
return 0;
}
front++;
return arr[front];
}
//显示队列头数据
public void showHeadQueue() {
System.out.println(arr[front + 1]);
}
}
}
posted @ 2020-03-13 14:37  奔跑的虫呙牛  阅读(300)  评论(0)    收藏  举报