20182309 2019-2020-1 《数据结构与面向对象程序设计》第10周学习总结

20182309 2019-2020-1 《数据结构与面向对象程序设计》第10周学习总结

教材学习内容总结

    • 无向图
    • 有向图
    • 带权图
    • 遍历方法
      • 深度优先
      • 广度优先
    • 连通性
    • 最小生成树
    • 最短路径
    • 实现图
      • 邻接表
      • 邻接矩阵

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

  • 问题1:判断最短路径
  • 问题1解决方案:一、Dijkstra算法
    规定一个 出发点,然后先初始化距离数组。数组中的每个下标就对应一个结点,每个数据项就是出发点到每个结点的距离。

1:将一个集合分为两部分,一个是已经找过的结点U,一个是没有找到过的v

2:在距离的数组中,没有访问过的结点中找一个权重最小的边,然后将这个结点添加到u中,并且以这个结点作为中间结点,来更新数组,判断条件是i到temp+temp到j 的距离是不是小于i到j的距离,若是,则就要更新。

3:直到u中的结点的个数=图中的结点的个数
算法的实现其实还是比较简单,和prim算法图的prim算法没什么差别,都是维护一个距离数组,来更新数组,不同的是只是添加一个判断条件而已。,在这里就没什么可说的,不懂的分析程序,运行结果一两遍就基本明白了

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

  • 问题1:定义顶点数组时会受到数组长度限制
  • 问题1解决方案:加上扩大方法
    public void expandCapacity()
    {
        T[] larger = (T[])(new Object[queue.length*2]);
        for (int index=0; index < count; index++)
            larger[index] = queue[(front+index) % queue.length];
        front = 0;
        rear = count;
        queue = larger;
    }

代码托管

20182309 2019-2020-1 《数据结构与面向对象程序设计》第10周学习总结_第1张图片

结对及互评

  • 代码中值得学习的或问题:
    • 提出与课本不同的方法解决问题
  • 基于评分标准,我给本博客打分:10分。得分情况如下:
    • 正确使用Markdown语法加1分
    • 模板中的要素齐全加1分
    • 教材学习中的问题和解决过程, 一个问题加1分
    • 代码调试中的问题和解决过程, 一个问题加1分
    • 本周有效代码超过300分行的加2分
    • 排版精美的加1分
    • 代码Commit Message规范的加1分
    • 有动手写新代码的加1分
    • 结对学习情况真实可信的加1分

点评过的同学博客和代码

  • 本周结对学习情况
    • 20182331
    • 结对学习内容
      • 阅读课本章节内容
      • 代码托管到码云上
      • 完成课后自测题,并参考答案学习
      • 完成课后练习题
      • 完成程序设计项目,至少完成pp19.1,pp19.3

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第一周 138/138 2/2 25/25 学会写和上传代码,会编简单的输出程序
第二周 88/226 1/3 30/55 起文件名不能太长
第三周 898/1124 2/5 35/90 Java类里面的方法和C语言的函数很像
第四周 632/1756 2/7 30/120 可以用继承extends简化重复的代码
第五周 770/2526 2/9 45/165 --amend -m可以重命名没push的文件
第六周 3947/6473 2/11 40/205 接口类的功能要分散,利用多继承完成功能
第七周 1359/7832 3/14 35/240
第八周 273/8105 1/15 15/255 查找前先排序更好
第九周 873/8978 2/17 50/305
第十周 744/9722 3/20 45/350

参考资料

  • 《Java程序设计与数据结构教程(第二版)》

  • 《Java程序设计与数据结构教程(第二版)》学习指导

你可能感兴趣的:(20182309 2019-2020-1 《数据结构与面向对象程序设计》第10周学习总结)