赞
踩
变量:
头指针:front
尾指针:rear
最大长度:maxSize
数组队列:arr[]
思路:
front指向第一个有效数据
rear指向最后一个位置的下一个位置
公式:
是否为满:
(rear + 1)%maxSize == front
是否为空
rear == front
打印
print(arr【i】 % maxSize)
入队、出队
front = (front + 1) % maxSize;
rear = (rear + 1) % maxSize;
- package sparseArr;
-
- import java.util.Scanner;
-
-
- public class SparseArray {
- public static void main(String[] args) {
- Query q = new Query(4);
- char k = ' ';
- Scanner sc = 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)");
- k = sc.next().charAt(0);
- switch(k) {
- case 's':
- q.print();
- break;
- case 'e':
- sc.close();
- loop = false;
- break;
- case 'a':
- System.out.print("输入一个数:");
- int n = sc.nextInt();
- q.push(n);
- break;
- case 'g':
- int res = q.pop();
- System.out.println("取出的数据是:" + res);
- break;
- case 'h':
- int res1 = q.headQueue();
- System.out.println("头数据:"+res1);
- break;
- }
- }
- }
- }
- class Query{
- private int maxSize;
- private int rear;
- private int front;
- private int[] arr;
-
- public Query(int maxSize) {
- this.maxSize = maxSize;
- rear = 0;
- front = 0;
- arr = new int[maxSize];
- }
- public int headQueue() {
- if(isEmpty()) {
- System.out.print("队列为空");
- return -1;
- }
- return arr[front];
- }
-
- public boolean isFull() {
- return (rear + 1) % maxSize == front;
- }
- public boolean isEmpty() {
- return rear == front;
- }
- public void push(int val) {
- if(isFull()) {
- System.out.println("队列为满!");
- return;
- }
- arr[rear] = val;
- rear = (rear + 1) % maxSize;
- }
- public int pop() {
- if(isEmpty()) {
- System.out.println("队列为空!");
- return -1;
- }
- int val = arr[front];
- front = (front + 1) % maxSize;
- return val;
- }
- public void print() {
- if(isEmpty()) {
- System.out.println("队列为空!");
- }
- for(int i = front; i <= usefulVal();i++) {
- System.out.printf("arr[%d] = %d\n",i % maxSize,arr[i % maxSize]);
- }
- }
- public int usefulVal() {
- return (rear + maxSize - front) % maxSize;
- }
- public int peak() {
- if(isEmpty()) {
- System.out.println("队列为空!");
- return -1;
- }
- int val = arr[(front+1)%maxSize];
- return val;
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。