2017年7月29日 星期六

(Java) 環形佇列 (FIFO)

import java.util.Scanner;
//環形佇列   FIFO
public class Queue {
static int size = 0 ; //陣列數量
static int front = -1 ; //新增前端
static int rear = -1 ; //取出尾端
static int Max_size = 5;
static int queue[] ; 
public static void main(String[] args){

Scanner sc = new Scanner(System.in) ; 
queue = new  int[Max_size] ;
while(true){
System.out.println("    (1 輸入) (2 取出) (3觀看陣列) (4是否空) (5是否滿)" );
int v = sc.nextInt() ;
if(v == 1){
System.out.print("輸入值 : " );
int value = sc.nextInt() ;
int a = add(value);
if(a == -1 )
System.out.println("已滿");
else
System.out.println("加入 : "+a );
}else if(v == 2 ){
int a =dequeue() ;
if(a== -1 ) 
System.out.println("已空");
else
System.out.println("取出 : "+a);      
}else if(v == 3){
for(int i : queue)
System.out.print("[  "+i+"  ]\t");
}else if(v == 4){
    isEmply();
}else{
   isFull();
}

}
}
public static int  add(int value){
if(size == Max_size)//已滿 
return -1 ; 
size ++ ; 
rear ++ ;//新增尾端
if(rear == Max_size) //增加超出界線 回到索引值0
rear = 0 ;
queue[rear] = value ;

return 1 ;
}
public static int dequeue(){
if(size == 0) // 已空
return -1 ;
size -- ;
front ++ ;
if(front  == Max_size) 
front = 0 ;//刪除前端
int value = queue[front];
queue[front] = 0;
return value  ;

}
public static void isEmply(){
if(size == 0)
System.out.println("陣列是空值");
else 
System.out.println("陣列有值");
}
public static void isFull(){
if(size == Max_size)
System.out.println("陣列已滿");
else 
System.out.println("陣列未滿");
}
}

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。