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

    20162302 队列课下作业

    主要内容:

    一、补全课上代码,用链表实现队列

    二、单步跟踪排队情况


    一、补全课上代码,用链表实现队列

    为了实现模拟票务柜台排队功能首先要构造一个类来实现队列。相对而言,用链表实现队列在操作上要简单一些。所以课本上先用LinkedQueue来实现队列。

    课本上已经给出了一个未完成的LinkedQueue类以及Queue接口


    但是这个方法是不能直接拿来用的,因为它只有将数据添加到队列的enquete()方法,没有将数据移出的dequeue()方法以及返回首位的first()方法等很多重要的部分还没有实现。

    课本上使用到了 LinearNode类,在我完成此项之前并未把课本上的类放到项目里面,所以我就自己在LinkedQueue里面建立了一个 LinearNode类。

    public class LinearNode<T> {
            private T data;
            private LinearNode next;
    
            private LinearNode(T dataPortion) {
                data = dataPortion;
                next = null;
            }
        }
    

    因为结构和课本上的不一样,所以在调用的时候也要做出修改。课本上是通过rear.setNext(node);来设定next指针的,因为没有setNext(),在我的类里面就要使用rear.next = node;来设定指针。

    @Override
        public void enqueue(T element) {
            LinearNode<T> node = new LinearNode<T>(element);
            
            if (count == 0)
                front = node;
            else
                rear.next = node;
            rear = node;
            count++;
        }
    

    这次补全代码不是很顺利,两次抛出NullPointerException异常,也就是空指针异常

    • 第一次是在测试仅调用enquete()添加数据到队列中调用toString()打印队列全部数据的时候抛出了异常

    经过debug分析,问题出在遍历队列的for循环上:数据的编码是从1开始数的,而不是像数组一样从零开始数

    • 第二次出现是在调用dequeue()删除数据以后调用toString()打印队列全部数据的时候抛出了异常

    这次for循环是没有问题,但是在遍历的时候长度不对,也就说明问题出现在count上。在删除数据完成以后没有及时的做差,导致了数据个数和count不符

     @Override
        public T dequeue() {
            LinearNode data = new LinearNode(front.data);
            data.next = front.next;
            if (count == 0) {
                System.out.println("Error");
                return null;
            } else {
                if (count == 1)
                    rear = null;
                front = front.next;
            }
            return (T)data.data;
        }
    

    二、单步跟踪排队情况

  • 相关阅读:
    MySQL新建用户,授权,删除用户,修改密码
    apache 压力测试
    wordpress设置导航栏
    关于PYTHON_EGG_CACHE无权限的问题
    ora 32021 设置参数时参数值长度超过255处理办法
    关于四字节字符入库时错误的解决方案(Incorrect string value: 'xF0x9Fx99x8F' for column 'Reply_Content' at row 1)
    Oracle Text Slowly
    Oracle Split Partitions
    下载有时失败
    Sytem 表空间很大
  • 原文地址:https://www.cnblogs.com/yangjingdian/p/7674145.html
Copyright © 2011-2022 走看看