队列(非环形)
package datastructure; import java.io.IOException; import java.util.Scanner; public class SpareArray { public static void main(String[] args) throws IOException { //测试一把 //创建一个队列 ArrayQueue arrayQueue = new ArrayQueue(3); Scanner scanner = new Scanner(System.in); boolean loop = true; char key = ' '; //接收用户输入 //输出一个菜单 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): 查看队列头的数据"); while (loop){ key = scanner.next().charAt(0);//接收一个字符 switch (key){ case 's': arrayQueue.showQueue(); break; case 'a': System.out.println("输出一个数"); int value = scanner.nextInt(); arrayQueue.addQueue(value); break; case 'g': int res = 0; try { res = arrayQueue.getQueue(); System.out.printf("取出的数据是%d\n", res); } catch (Exception e) { e.printStackTrace(); } break; case 'h': try{ int res2 = arrayQueue.headQueue(); System.out.printf("队列头的数据是%d\\n",res2); }catch (Exception e){ System.out.println(e.getMessage()); } break; case 'e': scanner.close(); loop = false; break; default: break; } } System.out.println("程序退出~~"); } } class ArrayQueue{ private int maxSize; // 表示数组的最大容量 private int front; // 队列头 private int rear; // 队列尾 private int[] arr; // 该数据用于存放数据, 模拟队列 // 创建队列的构造器 public ArrayQueue(int maxSize) { this.maxSize = maxSize; arr = new int[maxSize]; front = -1; rear = -1; } // 判断队列是否满 public boolean isFull(){ return rear == maxSize -1; } // 判断队列是否为空 public boolean isEmpty(){ return front == rear; } // 添加数据到队列 public void addQueue(int n){ // 判断队列是否满 if (isFull()){ System.out.println("队列满,不能加入数据~"); return; } rear++; //让 rear 后移 arr[rear] = n; } // 获取队列的数据, 出队列 public int getQueue(){ // 判断队列是否空 if (isEmpty()){ // 通过抛出异常 throw new RuntimeException("队列空,不能取数据"); } front++; // front 后移 return arr[front]; } // 显示队列的所有数据 public void showQueue(){ // 遍历 if (isEmpty()){ System.out.println("队列空的,没有数据~~"); return; } for (int i = front + 1; i < rear + 1; i++) { System.out.printf("arr[%d]=%d\n",i,arr[i]); } } // 显示队列的头数据, 注意不是取出数据 public int headQueue(){ // 判断 if (isEmpty()){ throw new RuntimeException("队列空的,没有数据~~"); } return arr[front + 1]; } }
数据结构(java代码实现) 文章被收录于专栏
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。