java版資料結構與演算法—佇列
阿新 • • 發佈:2018-12-21
/**
* 佇列:先進先出
*/
class MyQueue {
int a[];
int maxSize; //大小
int front; //開頭
int rear; //結尾
int nItems; //元素個數
//初始化
public MyQueue(int size){
maxSize = size;
a = new int[maxSize];
front = 0;
rear = -1;
nItems = 0;
}
//插入
public void insert(int value){
if(rear == maxSize - 1){
rear = -1;
}
a[++rear] = value;
nItems ++;
}
//刪除
public int remove(){
int tmp = a[front++];
if(front == maxSize){
front = 0;
}
nItems --;
return tmp;
}
//檢視
public int peekFront(){
return a[front];
}
//判滿
public boolean isFull(){
return nItems == maxSize;
}
//判空
public boolean isEmpty(){
return nItems == 0;
}
//檢視元素個數
public int size(){
return nItems;
}
public static void main(String[] args){
MyQueue myQueue = new MyQueue(10);
myQueue.insert(10);
myQueue.insert(20);
myQueue.insert(30);
myQueue.insert(40);
myQueue.insert(50);
System.out.println("刪除一次:" + myQueue.remove());
System.out.println("刪除兩次:" + myQueue.remove());
System.out.println("刪除三次:" + myQueue.remove());
myQueue.insert(60);
myQueue.insert(70);
myQueue.insert(80);
myQueue.insert(90);
myQueue.insert(100);
myQueue.insert(600);
while (!myQueue.isEmpty()){
int value = myQueue.remove();
System.out.print(value + " ");
}
}
}