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

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

教材学习内容总结

    • 无向图
    1. 无向图中,表示边的顶点对是无序的
    2. 如果图中的两个顶点之间有边连接,则称它们是邻接的
    3. 如果无向图中连接顶点的边数达到最大,则图为完全图
    4. 第一个顶点和最后一个顶点相同且边不重复的路径称为环
    • 有向图
    1. 在有向图中,边是顶点的有序对
    2. 有向图中的路径是连接图中两个顶点的有向边的序列
    • 带权图
      图的每条边上都有对应的权值称为带权图
  • 邻接矩阵
    1. 用一个一维数组存放图中所有顶点数据;用一个二维数组存放顶点间关系(边或弧)的数据,这个二维数组称为邻接矩阵。
  • 遍历
    • 广度优先遍历
      1. 从图中的某一个顶点x出发,访问x,然后访问与x所相邻的所有未被访问的顶点x1、x2……xn,接着再依次访问与x1、x2……xn相邻的未被访问的所有顶点。依次类推,直至图中的每个顶点都被访问。
      2. 实现方法:
        访问起始顶点,并将插入队列;
        从队列中删除队头顶点,将与其相邻的所有的未被访问的顶点插入队列中;
        重复第二步,直至队列为空。
        未被访问的顶点怎么识别呢?利用顶点的isVisited属性来进行标记。

      同时还需要另一个队列(或者是list)用来保存访问的顺序,另一个队列的顶点入队顺序就是图的广度遍历顺序,因此,该队列保持 与 前一个队列的顶点入队操作 一致。由于前一个队列是辅助遍历的,它有出队的操作,它就不能记录整个顶点的访问序列了,因此才需要一个保存访问顺序的队列。当整个过程遍历完成后,将 保存访问顺序的队列 进行出队操作,即可得到整个图的广度优先遍历的顺序了。

    • 深度优先遍历
      1. 从图中的某一个顶点x出发,访问x,然后遍历任何一个与x相邻的未被访问的顶点y,再遍历任何一个与y相邻的未被访问的顶点z……依次类推,直到到达一个所有邻接点都被访问的顶点为止;然后,依次回退到尚有邻接点未被访问过的顶点,重复上述过程,直到图中的全部顶点都被访问过为止。
      2. 实现方法:
        访问起始顶点,并将其压入栈中;
        从栈中弹出最上面的顶点,将与其相邻的未被访问的顶点压入栈中;当深度优先遍历到某个顶点时,若该顶点的所有邻接点均已经被访问,则发生回溯,即返回去遍历 该顶点 的 前驱顶点 的 未被访问的某个邻接点。(相当于没有把新的节点压入栈中,下一个被访问的节点是当前节点下面的节点)
        重复第二步,直至栈为空栈。
        未被访问的顶点怎么识别呢?利用顶点的isVisited属性来进行标记。

      对于深度优先而言,访问了 顶点A 时,紧接着只需要找到 顶点A 的一个未被访问的邻接点,再访问该邻接点即可。而对于广度优先,访问了 顶点A 时,就是要寻找 顶点A的所有未被访问的邻接点,再访问 所有的这些邻接点。

      同时还需要另一个队列(或者是list)用来保存访问的顺序。

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

  • 问题1:
  • 问题1解决方案:

  • 问题2:
  • 问题2解决方案:

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

  • 问题1:
  • 问题1解决方案:

代码托管week10

上周考试错题总结

结对及互评

点评:

  • 博客中值得学习的或问题:
    • 对课本,代码进行多方位的思考。
    • 认真寻找自己的不足之处。
    • 举例说明问题。
  • 代码中值得学习的或问题:
  • 基于评分标准,我给本博客打分:14分。得分情况如下:
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 结对学习情况真实可信的加1分
    • 正确使用Markdown语法
    • 模板中的要素齐全(加1分)
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 教材学习中的问题和解决过程, 加5分
    • 代码调试中的问题和解决过程,加2分

点评过的同学博客和代码

其他(感悟)

  • 学习了图,回忆起了离散的内容。
  • 开始写大实践,学习了后台布局的一些知识。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 26/200 2/2 7/7
第二、三周 235/327 3/5 15/23
第四周 123/450 2/7 8/31
第五周 850/1300 2/9 9/40
第六周 846/1696 2/11 7/47
第七周 1614/3310 2/13 15/62
第八周 360/3670 1/14 10/72
第九周 2611/6281 2/16 10/82
第十周 2348/8629 2/18 11/83
  • 实际学习时间:11小时

参考资料

猜你喜欢

转载自www.cnblogs.com/20182326lyj/p/11945343.html