1、要求:
(1)取号时,打印当前排队号码,且给出当前等待的人数。
(2)叫号时,打印当前办理业务的排队号码。
提示:使用队列实现该功能。取号即为入队操作,叫号即为出队操作。
接口类: package sj;
/*
* 队列接口
*/
public interface Queue1 {
boolean isEmpty();
boolean isFull();
Object enQueue(Object element);
Object deQueue();
Object peek();
int getSize();
} 实现类: package sj;
import java.util.Scanner;
public class SeqQueue implements Queue1 {
private final int MAX_QUEUE=100;//数组的默认容量
private Object[] value;//对象数组
private int front;//队头指针
private int rear;//队尾指针
private int count;//计数器
public SeqQueue() {//构造空队列
value=new Object[MAX_QUEUE];
front=0;
rear=MAX_QUEUE-1;
count=0;
}
public boolean isEmpty(){ //判断队列是否为空
return count==0;
}
public boolean isFull(){ //判断队列是否已满
return count==MAX_QUEUE;
}
public Object enQueue(Object element){//入队
if(!isFull()){
rear=(rear+1)%MAX_QUEUE;
value[rear]=element;
count++;
return element;
}
return null;
}
public Object deQueue(){//出队
if(!isEmpty()){
Object temp=value[front];
front=(front+1)%MAX_QUEUE;
count--;
return temp;
}
return null;
}
public Object peek(){//取队头元素
if(!isEmpty()){
return value[front];
}
return null;
}
//查询队列长度
public int getSize(){
return count;
}
public static void main(String[] args) {
SeqQueue seqqueue = new SeqQueue();
Scanner scan1 = new Scanner(System.in);
Scanner scan2 = new Scanner(System.in);
int i;
String k;
do {
System.out.println("------------ 菜单 -------------\n"
+ "------------1:取号 -----------------\n"
+ "------------2:叫号 -----------------\n"
+ "------------3:队列长度 -----------\n"
+ "------------0:退出 -----------------\n");
i = scan1.nextInt();
switch(i) {
case 1:
System.out.println("请输入您的姓名:");
k=scan2.nextLine();
System.out.println(seqqueue.enQueue(k)+"所在的位置为:第"+seqqueue.getSize()+"\n");
break;
case 2:
System.out.println("当前取号的是:"+seqqueue.peek()+"\n");
seqqueue.deQueue();
break;
case 3:
System.out.println("当前队列长度为:"+seqqueue.getSize()+"\n");
break;
}
}while(i!=0);
System.out.println("退出成功");
}
}
|