zoukankan      html  css  js  c++  java
  • 20172324 2018-2019-1 《程序设计与数据结构》第三周学习总结

    20172324 2018-2019-1 《程序设计与数据结构》第三周学习总结

    教材学习内容总结

    • 概述
    1. 队列是一种线性集合,也就是FIFO,举一个例子,银行排队。元素从队列末端进入,从队列前端退出。
    操作 说明
    enqueue(add/insert) 向队列末端添加一个元素
    dequeue(remove/serve) 从队列前段删除一个元素
    first(front) 考察队列前端的那个元素
    isempty 判定队列是否为空
    size 确定队列的元素数目
    • Java API中的队列

    API中提供的是一个接口Queue,由LinkedList来实现。

    element:检索首部元素,但不删除它

    • 增加元素:add&offer

      • add:保证队列含有给定元素,当给定元素没有添加到队列中会抛出异常

      • offer:把给定元素插入队列,成功返回true,失败返回false

    • 删除元素:poll&remove

      • poll:如果队列为空,返回null
      • remove:如果队列为空,抛出一个异常
    • 代码密钥,售票窗口模拟

    • 队列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();
    
    }
    
    • 用链表实现队列
    1. 除了一个指向链表首元素的引用(称为head)之外,还需要跟踪另一个指向链表末元素的引用(称为tail)还需要一个整型变量count来跟踪队列中的元素数目
    2. 对于单向链表,可选择从末端入列,从前端出列。但双向链表可以解决遍历列表的问题,无所谓从哪端入列出列。
    • 用数组实现
    1. 队列修改会修改集合两端,因此讲一端固定于索引0处要求移动元素,非环形数组实现的元素移位,将产生O(n)的复杂度。

    2. 环形数组:最后一个引索后面跟的是第一个引索

      这个是实例化一个包含initialCapacity个泛型对象的数组的正确方法

      queue = ((T[])(New Object[initialCapacity]))
      
    • 双端队列

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

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

    • 问题1:书上说,“在栈中,其处理过程只在栈的某一段进行;而在队列中,其处理过程可以在两端进行”具体的意思及其他的区别是什么?

    • 问题1解决方案:

      某一段及两端的区别:

      栈和队列是两种限定性的数据结构,它们限定了插入和删除数据元素的位置,在表的两端进行。
      栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。
      队列(Queue)是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。

      其他区别:

      1. 队列先进先出,栈先进后出
      2. 遍历数据速度不同。栈只能从头部取数据 遍历整个栈最后才能取出来,同时开辟临时空间。队列基于地址指针进行遍历,而且可以从头或尾部开始遍历,但不能同时遍历,无需开辟临时空间,速度要快的多。
      3. 上面那个
    • 问题2:请问这个问题是什么!

    • 问题2解决方案:想不出来,我也好无奈哦.解决聊!

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

    • 问题一:做pp5.2的时候题目要求自己编写toString方法,但是编完之后就提示有错误,错误在自己遍的toString方法上。

    • 问题一解决方案:之前看书的时候没有注意这一句:“toString会变得更加复杂,因为元素不是从0处开始存储的,而且还可能会环绕数组的末端。”而我之前是直接复制5.1中的toString方法改的,所以出现了问题,发现问题重新改过之后就没有报错了

    代码托管

    上周考试错题总结

    结对及互评

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

    点评过的同学博客和代码

    • 本周结对学习情况
      • 结对同学学号21
      • 结对学习内容
        • 一起讨论了那个initialCapacity的问题,最后一致决定改为100

    其他(感悟、思考等,可选)

    课后调查:

    skills 课前评估(0...9) 课后评估(0...9)
    Programming Overall/对编程整体的理解 3 8
    Programming:Comprehension/程序理解 4 9
    Programming:Performance/效能改进和分析 5 8
    Programming:Code Review/代码复查 3 9
    Programming:Test/单元测试 5 9

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0 1/1 20/20
    第二周 300/500 1/2 18/38
    第三周 300/600 1/3 18/38

    参考资料

  • 相关阅读:
    抓包工具 Fiddler 使用介绍
    HTTP 协议常见首部字段
    HTTP 协议服务器相关概念
    HTTP 协议常见的状态码
    HTTP 协议中 GET 和 POST 方法详解
    设置html title标题左侧的小图标
    HTML页面如何判断是手机访问还是电脑访问
    使用Java的Frame类编写的QQ登录界面
    swing中JTable的使用方法
    采用MVC模式JDBC演示案例
  • 原文地址:https://www.cnblogs.com/amberR/p/9710798.html
Copyright © 2011-2022 走看看