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

    二、单步跟踪排队情况

  • 相关阅读:
    括号序列
    乘积最大
    装箱问题
    开心的金明
    金明的预算方案(有依赖的背包问题)
    砝码称重
    (枚举)算法竞赛入门经典(7.1.2)最大乘积
    (枚举)算法竞赛入门经典(7.1.1)除法
    Zabbix历史数据清理
    sonarqube6.7.1使用
  • 原文地址:https://www.cnblogs.com/yangjingdian/p/7674145.html
Copyright © 2011-2022 走看看