队列(数组模拟环形队列) (2)

85 阅读3分钟

“携手创作,共同成长!开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情

数组模拟环形队列

与数组模拟队列的区别:

1)目前数组会存在使用一次后便不能用了,没有达到程序复用的效果。

2)可以对这个数组使用算法,改成一个环形的数组(%)

使用代码测试是否可以创建成功

代码实现


//创建一个队列

//设置是3,其队列最大为2,因为有一位是预留出来的

CircleArray circleArray = **new** CircleArray(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':

circleArray.showqueue();

**break**;

**case** 'a':

System.***out***.println("请输入一个数");

**int** value=scanner.nextInt();

circleArray.addqueue(value);

**break**;

**case** 'g':

**try** {

**int** res=circleArray.getqueue();

System.***out***.printf("取出的数据是%d\n",res);

} **catch** (Exception e) {

System.***out***.println(e.getMessage());    

}

**break**;

**case** 'h':

**try** {

**int** res=circleArray.headerqueue();

System.***out***.printf("队列头数据是%d\n",res);

} **catch** (Exception e) {

System.***out***.println(e.getMessage());    

}

**break**;

**case** 'e':

scanner.close();

loop=**false**;

**break**;

**default**:

System.***out***.println("输入的不在范围内");;

}

}

System.***out***.println("程序已经成功退出");

}

代码要点:

虽然设置是3,但是其队列最大为2,因为有一位是预留出来的给rare的,此程序中rare代表着最后一位的后一位

执行过程:

s(show)显示队列

e(exit)退出程序

a(add)向队列添加一个数据

g(get)从队列中取出一个数据

h(head)查看队列头数据

a

请输入一个数

1

s(show)显示队列

e(exit)退出程序

a(add)向队列添加一个数据

g(get)从队列中取出一个数据

h(head)查看队列头数据

a

请输入一个数

2

s(show)显示队列

e(exit)退出程序

a(add)向队列添加一个数据

g(get)从队列中取出一个数据

h(head)查看队列头数据

a

请输入一个数

3

队列已满,不能存放数据

s(show)显示队列

e(exit)退出程序

a(add)向队列添加一个数据

g(get)从队列中取出一个数据

h(head)查看队列头数据

s

arr[0]=1

arr[1]=2

s(show)显示队列

e(exit)退出程序

a(add)向队列添加一个数据

g(get)从队列中取出一个数据

h(head)查看队列头数据

g

取出的数据是1

s(show)显示队列

e(exit)退出程序

a(add)向队列添加一个数据

g(get)从队列中取出一个数据

h(head)查看队列头数据

a

请输入一个数

3

s(show)显示队列

e(exit)退出程序

a(add)向队列添加一个数据

g(get)从队列中取出一个数据

h(head)查看队列头数据

s

arr[1]=2

arr[2]=3

s(show)显示队列

e(exit)退出程序

a(add)向队列添加一个数据

g(get)从队列中取出一个数据

h(head)查看队列头数据

h

队列头数据是2

s(show)显示队列

e(exit)退出程序

a(add)向队列添加一个数据

g(get)从队列中取出一个数据

h(head)查看队列头数据

e

程序已经成功退出