• 20172321 2018-2019《Java软件结构与数据结构》第三周学习总结


    教材学习内容总结

    第五章

    • 5.1概述
    • 队列是一种线性集合,其元素从一端加入,从另一端删除;队列的处理方式是先进先出(First in First out)。
    • 与栈的比较(LIFO)
    • 栈是一端操作,先进后出

    • 队列是两端操作,先进先出

    • 栈的一些操作

      操作 描述
      enqueue 向队列末端添加一个元素
      dequeue 从队列前端删除一个元素
      first 考察队列前端的那个元素
      isEmpty 判定队列是否为空
      size 判定队列中的元素数目
      toString 返回队列中的字符串表示
    • 5.2javaAPI中的队列:Java集合API并没有提供队列类,而是提供了一个Queue接口,由多个类(包括LinkedList类)来实现的。

    • 5.5队列ADT

      • 接口类中的各个方法
    public interface QueueADT<T> {
    
        public void enqueue(T element);
        public T dequeue();
        public T first();
        public  boolean isEmpty();
        public  int size();
        public String toString();
    }
    }
    
    • 5.6用链表实现队列:要用链表实现栈,就要操作链表的两端。

      • 需创建两个引用:一个指向链表首元素(head),一个指向链表末元素(tail)
      • 另需一个整型变量count来跟踪队列中的元素数目
    • 5.7用数组实现队列

      • 队列操作会修改集合的两端,因此将队列的某一端固定在数组的索引0处,所有元素不间断地存放在数组中。
      • dequeue操作的复杂度为O(n),所以用固定数组实现栈的效率较低
    • 5.8双端队列

      • 队列的扩展,允许从队列的两端添加、删除和查看元素。

    教材学习中的问题和解决过程

    • 问题1:打教材上的代码的时候有些地方总是红色,反复检查发现和教材一致没有打错,后来知道教材其实有一些问题。

    • 解答:比如说这里,教材上是
    public CircularArrayQueue() {
            this (DEFAULT_CAPACITY);
        } 
    

    这个()里就会报错,我直接把里面改成100就好了

    代码调试中的问题和解决过程

    • 在作LinkedQueue类的first()方法的时候,我是把链表实现栈的peek()方法复制过来修改的,但是测试总是有问题,而且在CircularArrayQueue类也是这么做出来的却没有问题。

    • 最后我还是不知道为什么,我直接把
    //        if (isEmpty())
    //            throw new EmptyCollectionException("queue");
    

    注释掉了就可以了,等我再想想正常的方法再来修改。

    更新 更新 更新
    我发现了是我tostring的方法有问题,原来这样写,使用这个方法后栈就被清空了,所以弹出会错误,改为之后就可以了

    代码托管

    上周考试错题总结

    结对及互评

    • 20172324曾程
    • 博客中值得学习的或问题:
      • 书上代码的学习很到位
      • 代码调试环节比较详细,从截图上来看注释也很规范整齐,值得学习。
    • 基于评分标准,我给本博客打分:11分。得分情况如下:
      • 正确使用Markdown语法(加1分)
      • 模板中的要素齐全(加1分)
      • 教材学习中的问题和解决过程, 加4分
      • 代码调试中的问题和解决过程, 加4分
      • 本周有效代码超过300分行,加2分
      • 进度条中记录学习时间与改进情况的加1分

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
    目标 5000行 30篇 400小时
    第一周 0/0 1/1 8/8
    第二周 671/671 1/2 17/25
    第二周 345/1016 1/3 15/40

    参考资料

  • 相关阅读:
    SharePoint2013配置网站邮箱1
    使用正则表达式验证注册页面(用户名,密码,确认密码,邮箱,手机号)
    邮箱和电话验证
    js页面自动刷新和自动跳转
    B. Secret Combination
    B. Queue
    A. Crazy Town
    C. New Year Book Reading
    A. Little Pony and Expected Maximum
    B. Fox And Two Dots
  • 原文地址:https://www.cnblogs.com/N-idhogg/p/9708199.html
Copyright © 2020-2023  润新知