“携手创作,共同成长!开启掘金成长之旅!这是我参与「掘金日新计划 · 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
程序已经成功退出