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("退出成功"); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)