模拟顾客餐厅前等候就餐排队(java实现)

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("退出成功");
	}		
} 

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值