zoukankan      html  css  js  c++  java
  • 队列课下作业

    队列课下作业

    作业要求

    • 1 补充课上没有完成的作业
    • 2 参考15.3节,用自己完成的队列(链队,循环数组队列)实现模拟票务柜台排队功能
    • 3 用JDB或IDEA单步跟踪排队情况,画出队列变化图,包含自己的学号信息
    • 4 把代码推送到代码托管平台
    • 5 把完成过程写一篇博客:重点是单步跟踪过程和遇到的问题及解决过程
    • 6 提交博客链接
    一、补充课上没有完成的作业:将《Java程序设计与数据结构教程(第二版)》15章的15.5链表队列的代码中的dequeue()、first()、isempty()、size()、toString()实现:
    package ch15;
    
    /**
     * Created by Funny_One on 2017/10/10.
     */
    public class LinkedQueue<T> implements Queue<T> {
        private int count;
        private LinearNode<T> front,rear;
    
        //Creates an empty queue
        public LinkedQueue(){
            count =0;
            front = rear = null;
        }
    
        @Override
        public void enqueue(T element) {
            LinearNode<T> node = new LinearNode<T>(element);
            if(count == 0){
                front = node;
            }else {
                rear.setNext(node);
            }
            rear = node;
            count++;
        }
    
        @Override
        public T dequeue() throws EmptyCollectionException{
            T element = front.getElement();
            if(count == 1){
                front = rear = null;
            }else {
                front = front.getNext();
            }
            count--;
            return element;
        }
    
        @Override
        public T first() {
            T element = front.getElement();
            return element;
        }
    
        @Override
        public boolean isEmpty() {
            boolean judge=false;
            if (count == 0){
                judge = true;
            }
            return judge;
        }
    
        @Override
        public int size() {
            return count;
        }
    
        @Override
        public String toString(){
            String str1 = "<The head of the queue>";
            LinearNode<T> node = new LinearNode<T>();
            node = front;
            while (node!=null){
    
                if(node.getNext()==null){
                    str1 += " "+ node.getElement() + " <The tail of the queue>";
                }else {
                    str1 += " "+node.getElement()+",";
                }
                node = node.getNext();
            }
            return  str1;
        }
    }
    
    
    二、参考15.3节,用自己完成的队列(链队,循环数组队列)实现模拟票务柜台排队功能

    三、用JDB或IDEA单步跟踪排队情况,画出队列变化图,包含自己的学号信息

    队列分析(只列取至有两位售票员的情况)

    处理一个顾客需要的时间是120秒,下一个顾客距离上一个顾客到达的时间是15秒。

    当一个售票员的时候:

    当只有一个售票员的时候,顾客都得到这个售票员这里买票,根据上面的条件,当该售票员处理一个顾客的时候,后面可以来8个顾客等待(120/15)。用99除以8(由于第一个到的已经开始在处理,所以要100-1),可以得到12余3,根据该情况,需要处理13个顾客后才能100个顾客全部到齐。

    当两个售票员的时候:

    根据代码的调试,顾客排队的顺序是顾客的数量平均分给顾客,当两个人的时候,可以理解成一个售票员处理50名顾客,用49除以8,可以得到6余1,就是说要处理7个顾客后50人才能到齐。

    后面的情况大同小异,可以如此类推。

  • 相关阅读:
    Xamarin.Forms 开发IOS、Android、UWP应用
    C# 根据路径删除文件或文件夹
    UWP应用程序使用Prism框架构建MVVM
    创建UWP通用应用程序
    初体验uglifyjs压缩JS
    ecarts图与表格切换时,echarts全变形的原因及解决办法
    vue表格绑定数据中的值发生改变时,表格未刷新
    基于pycaffe的网络训练和结果分析(mnist数据集)
    安装python caffe过程中遇到的一些问题以及对应的解决方案
    logistic regression浅析
  • 原文地址:https://www.cnblogs.com/VersionP1/p/7675408.html
Copyright © 2011-2022 走看看