package com.yu.datastructure.stack;
//循环队列 核心思路 保存当前队列的头和尾
class Queue{
private int capability = 10;
private int front = 0;
private int rear = 0;
private int size = 0;
private int[] queue = null;
public Queue(int cap){
this.capability = cap;
queue = new int[capability];
}
public Queue(){
queue = new int[capability];
}
public void inQueue(int data){
//队列不为空
if(size==0 || (rear % capability != front)){
queue[rear] = data;
rear = (rear + 1) % capability;
size ++;
}
}
public int outQueue(){
int res = -1;
if(front >= 0 && front < capability){
res = queue[front];
front = (front + 1) % capability;
size--;
}
return res;
}
}
public class QueueTest {
public static void main(String[] args) {
Queue q = new Queue(3);
q.inQueue(1);
q.inQueue(2);
System.out.println(q.outQueue());
System.out.println(q.outQueue());
q.inQueue(3);
q.inQueue(2);
q.inQueue(1);
System.out.println(q.outQueue());
System.out.println(q.outQueue());
System.out.println(q.outQueue());
System.out.println("");
}
}