//環形佇列 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("陣列未滿");
}
}
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。