package com.qmcheng.queue;
import java.util.Scanner;
/**
* 使用数组模拟队列
*/
public class ArrayQueueDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入队列大小:");
int maxSize = scanner.nextInt();
ArrayQueue queue = new ArrayQueue(maxSize);
loop: while (true) {
System.out.println("请输入命令:");
System.out.println("----------a 添加---------");
System.out.println("----------p 弹出数据---------");
System.out.println("----------s 展示数据---------");
System.out.println("----------q 退出---------");
String command = scanner.next();
switch (command) {
case "a":
System.out.println("请输入加入的数字");
int data = scanner.nextInt();
queue.add(data);
break;
case "p":
queue.push();
break;
case "s":
queue.show();
break;
case "q":
break loop;
default:
System.out.println("找不到命令:"+command+" 请重新输入");
break;
}
}
}
}
class ArrayQueue {
private int maxSize; // 表示数组的最大容量
private int header; //队列头 指向对列的第一个元素
private int rear; // 队列尾 指向队列最后一个元素的后一位
private int[] arr; // 存放队列数据 模拟队列
public ArrayQueue(int arrMaxSize) {
maxSize = arrMaxSize;
arr = new int[maxSize];
header = 0;
rear = 0;
}
public boolean isEmpty() {
return header == rear;
}
public boolean isFull() {
return (rear + 1) % maxSize == header;
}
public void add(int data) {
// 添加数据
if (isFull()) {
System.out.println("添加失败,队列已经满了");
return;
}
System.out.println("加入数据:"+ data);
arr[rear] = data;
rear = (rear + 1) % maxSize;
}
public void push() {
// 弹出数据
if (isEmpty()) {
System.out.println("队列是空的");
return;
}
System.out.println("弹出头部数据:"+ arr[header]);
arr[header] = 0;
header = (header + 1) % maxSize;
}
public void show() {
// 展示队列所有数据
if (isEmpty()) {
System.out.println("队列是空的");
return;
}
int headerTemp = header;
while (headerTemp != rear) {
System.out.printf("arr[%d]:%d \n", headerTemp, arr[headerTemp]);
headerTemp = (headerTemp + 1) % maxSize;
}
}
}
使用数组模拟队列
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java 中数组的使用(一维数组和二维数组)
本文详细的介绍了,在Java 中数组的使用,并对其内存存在形式进行了详细的分析。
数组 一维数组 二维数组 java基础 -
golang使用数组模拟环形队列(demo)
golang使用数组模拟环形队列(demo)
goalng queue -
数据结构_使用数组模拟环形队列
数据结构学习之数组模拟环形队列的实现
数据结构 java 算法 数据 System -
队列系列篇——数组模拟
基本介绍数组模拟队列代码实现
java 数据结构 数据 数组 添加数据 -
Go 数组模拟环形队列
Go 数组模拟环形队列
golang 算法 c++ 添加数据 环形队列 -
Go 数组模拟单项队列
Go 数组模拟单项队列
golang 数据结构 链表 添加数据 数组 -
数据结构之使用数组模拟队列的操作
数据结构之数组模拟实现队列的操作
数据结构 java jvm 数据 System -
622. 设计循环队列 : 数组模拟循环队列
详情 题目描述 这是 LeetCode 上的 622. 设计循环队列 ,难度为 中等。 Tag : 「设计数据结
后端 Java 算法 循环队列 数据结构