数组模拟单一队列(非循环)
代码如下:
import java.util.Scanner;
/*
数组实现单一队列
*/
public class SimpleArrayQueuen {
public static void main(String[] args){
ArrQueue arrQueue = new ArrQueue(3);
char c;
boolean b = true;
while (b){
System.out.println("请输入字母操作");
System.out.println("a(add),插入数据");
System.out.println("s(show),查看数据");
System.out.println("h(addHead),查看头部数据");
System.out.println("g(get),取出数据");
System.out.println("e(exit),退出");
Scanner in = new Scanner(System.in);
c = in.next().charAt(0);
switch (c){
case 'a':{
int n;
try{
System.out.println("请输入添加的数据:");
n = in.nextInt();
arrQueue.addQueuen(n);
System.out.println("添加成功!");
}catch (Exception e){
e.printStackTrace();
}
break;
}
case 'h':{
try{
System.out.println("头部第一个数据为:"+arrQueue.showHead());
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
}
case 's':{
try{
System.out.println("所有数据为:");
arrQueue.showAll();
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
}
case 'g':{
try {
System.out.println("取出的数据为:"+arrQueue.getQueuen());
}catch (Exception e){
System.out.println(e.getMessage());
}
break;
}
case 'e':{
System.out.println("即将退出!!!");
b = false;
}
}
}
}
}
class ArrQueue{
private int rear;//队列头
private int front;//队列尾
private int maxSize;//最大数据量
private int[] arr;//存取数据的数组
public ArrQueue(int n){
maxSize = n;
arr = new int[maxSize];//初始化数组大小
rear = -1;
front = -1;
}
//判断队列是否为空
public boolean isEmpty(){
return rear == front;
}
//判断队列是否满
public boolean isFull(){
return rear == maxSize-1;
}
//填入数据
public void addQueuen(int n){
if(isFull()){
System.out.println("队列已满,无法插入新数据!");
return;
}
rear++;
arr[rear] = n;
}
//取数据
public int getQueuen(){
if(isEmpty()){
throw new RuntimeException("队列为空,无数据!");
}
front++;
return arr[front];
}
//展示所有数组
public void showAll(){
if(isEmpty()){
throw new RuntimeException("队列为空,无数据!");
}
for(int i=0;i<arr.length;i++){
System.out.printf("arr[%d]=%d\ns" +
"",i,arr[i]);
}
}
//展示头数据
public int showHead(){
if(isEmpty()){
throw new RuntimeException("队列为空,无数据!");
}
return arr[front+1];
}
}
使用了数组实现队列的数据的添加/取出/查看三个基本功能,队列入门级别的,简单易懂。缺点是数组空间的浪费,不能重复使用数组空间,后续我会写一个数组模拟循环队列。
最新更新的另一篇:
使用数组实现循环队列。