概述
//1,调整front,arr[front]表示队列第一个元素,初始值为0
//2. rear指向队列最后一个元素的后一个位置,因为空出来一个空间做约定初始值为0
//3. 队列满时,条件为(rear+1)%maxSize=front[满]
//4. 队列为空,raer==front
//5. 队列中有效的数据个数 (rear+maxSize-front)%maxSize//rear=1;front=0
package dL;
import java.nio.Buffer;
import java.util.Scanner;
public class arrayQueueDemo {
public static void main (String[] args) {
//创建一个队列
ArrayQueue arrayQueue=new ArrayQueue(3);
char key=' ';//接受用户输入
Scanner scanner =new Scanner(System.in);
boolean loop=true;
//输出一个菜单
while (loop){
System.out.printf("s(show):显示队列");
System.out.printf("e(exit):退出程序");
System.out.printf("a(add):添加数据");
System.out.printf("g(get):取出数据");
System.out.printf("h(head):查看队列头");
key=scanner.next().charAt(0);//接受一个字符
switch (key){
case 's':
arrayQueue.showQueue();
break;
case 'a':
try {
System.out.printf("输出一个数");
int value=scanner.nextInt();
arrayQueue.addQueue(value);
}catch (Exception e){
System.out.printf(e.getMessage());
}
break;
case 'g':
try {
int res=arrayQueue.getQueue();
System.out.printf("取出的数据是%dn",res);
}catch (Exception e){
System.out.printf(e.getMessage());
}
break;
case 'h'://查看队列头
try {
int res=arrayQueue.headQueue();
System.out.printf("队列头的数据是%dn",res);
}catch (Exception e){
System.out.printf(e.getMessage());
}
break;
case 'e':
scanner.close();
loop=false;
break;
default:
break;
}
System.out.printf("程序退出");
}
}
}
// 使用数组模拟队列,编写一个arrayQueue类;
class ArrayQueue{
private int maxSize;//数组最大容量
private int fornt;//队列头
private int rear;
private int[] arr;//用来存放数据
//创建队列的构造器
public ArrayQueue(int arrMaxSize){
maxSize=arrMaxSize;
arr=new int[maxSize];
fornt=-1;//指向队列头部,前一个位置 分析出
rear=-1;//指向队列尾部的具体数据(就是队列最后一个数据)
}
public boolean isFull(){
return rear==maxSize-1;
}
public boolean isEmpty()
{
return rear==fornt;
}
public void addQueue(int n){
if (isFull()){
System.out.println("队列满,不能加入");
}
rear++;
arr[rear]=n;
}
public int getQueue()
{
//判断是否为空
if (isEmpty()){
//通过抛出异常
throw new RuntimeException("队列为空,不能取数据");
}
fornt++;
return arr[fornt];
}
//显示队列数据
public void showQueue(){
if (isEmpty()){
System.out.println("队列空");
}
for (int i=0;i< arr.length;i++){
System.out.printf("arr[%d]=%dn",i,arr[i]);
}
}
//显示队列头部,不是取出数据;
public int headQueue(){
if (isEmpty()){
System.out.printf("队列空没有数据");
throw new RuntimeException("队列为空,不能取数据");
}
return arr[fornt+1];
}
}
//1,调整front,arr[front]表示队列第一个元素,初始值为0
//2. rear指向队列最后一个元素的后一个位置,因为空出来一个空间做约定初始值为0
//3. 队列满时,条件为(rear+1)%maxSize=front[满]
//4. 队列为空,raer==front
//5. 队列中有效的数据个数 (rear+maxSize-front)%maxSize//rear=1;front=0
最后
以上就是淡淡白开水为你收集整理的循环数组实现队列(java实现)的全部内容,希望文章能够帮你解决循环数组实现队列(java实现)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复