变量:
头指针:front
尾指针:rear
最大长度:maxSize
数组队列:arr[]
思路:
front指向第一个有效数据的前一位置
rear指向最后一个位置
代码
package sparseArr;
import java.util.Scanner;
public class SparseArray {
public static void main(String[] args) {
Query q = new Query(5);
char k = ' ';
boolean loop = true;
Scanner sc = new Scanner(System.in);
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.peak();
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 = -1;
front = -1;
arr = new int[maxSize];
}
public boolean isFull() {
return rear == maxSize - 1;
}
public boolean isEmpty() {
return rear == front;
}
public void push(int val) {
if(isFull()) {
System.out.println("队列为满!");
return;
}
rear++;
arr[rear] = val;
}
public int pop() {
if(isEmpty()) {
System.out.println("队列为空!");
return -1;
}
int val = arr[front+1];
front++;
return val;
}
public void print() {
if(isEmpty()) {
System.out.println("队列为空!");
}
for(int i = front + 1; i <= rear; i++) {
System.out.print(arr[i]);
}
}
public int peak() {
if(isEmpty()) {
System.out.println("队列为空!");
return -1;
}
int val = arr[front+1];
return val;
}
}