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;
        }
    

    二、单步跟踪排队情况

  • 相关阅读:
    web前端的发展态势
    AngularJs 简单入门
    css代码优化篇
    git提交报错:Please make sure you have the correct access rights and the repository exists.
    Activiti工作流框架学习
    遍历map集合的4种方法
    js设置日期、月份增加减少
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    webservice_rest接口_学习笔记
    相互匹配两个list集合+动态匹配${}参数
  • 原文地址:https://www.cnblogs.com/yangjingdian/p/7674145.html
Copyright © 2011-2022 走看看