20162327 《程序设计与数据结构》第十一周学习总结

20162327 2017-2018-1 《程序设计与数据结构》第十一周学习总结

教材学习内容总结

  • 1、在无向图中,表示边的顶点对是无序的
  • 2、如果图中的两个顶点之间有边连接,则称它们是邻接的
  • 3、如果无向图中的连接顶点的边数达到最大,则图为完全图
  • 4、路径是图中连接顶点的边的序列
  • 5、有向图中,边是顶点的有序对
  • 6、有向图中的路径是连接两个顶点的有向边的序列
  • 7、图的每条边上都有对应的权值的图称为带权图
  • 8、图的深度优先遍历与广度优先遍历的主要差异在于栈代替队列来管理遍历过程
  • 9、当且仅当从任意顶点开始的广度优先遍历中得到的顶点数等于图中所包含的顶点数时,图时连通
  • 10、生成树时是包含图中所有顶点及图中部分边的一棵树
  • 11、最小生成树是其所含边的权值之和小于等于图的任意其他生成树的边的权值之和的生成树

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

  • 问题1:图的遍历与树的遍历有什么区别?
  • 问题1解决方案:树是有序的,图是无序的。图有两种林子里的方法,一种是广度优先遍历,另一种是深度优先遍历。对于树来说,它的广度优先遍历就是层序遍历,深度优先遍历就是先序遍历。
  • 问题2:生成树和最小生成树的问题?
  • 问题2解决方案: 解决最先生成树有两种算法,一种是Prim算法,这种算法是从点入手,适合比较稠密的图;另一种是Krukal算法,它是从边入手,适合于比较稀疏的图。
  • 问题3:每一对顶点之间的最短路径问题?
  • 问题3解决方案:第一种:Dijkstra算法——边上权值非负的情形的单源最短路径问题

    第二种:Bellman-Ford——边上权值为任意值的单源最短路径问题

    第三种:Floyd——所有顶点间的最短路径

  • 问题3:附图列出某工程之间的优先关系和各工程所需时间,要求:
  1. 画出AOE网
  2. 列出各事件的最早、最迟发生时间
  3. 找出该AOE网中的关键路径,并回答完成该工程需要的最短时间

  • 问题3解决方案:

教材中出现的代码问题及解决过程

  • 问题一:表示顶点集合的抽象图类
  • 解决方案:
public abstract class AbstractGraph<T>    //抽象图类
{
    protected static final int MAX_WEIGHT=0x0000ffff;  //∞
    protected SeqList<T> vertexlist;              //顶点顺序表

    //构造空图,顶点数为0,length指定顶点顺序表容量
    public AbstractGraph(int length)
    public AbstractGraph()

    public int vertexCount()                 //图的顶点数
    public String toString()                  //图的顶点集合描述
    public T getVertex(int i)                 //顶点元素
    public void setVertex(int i, T x)     //设置顶点元素为x
}
public abstract class AbstractGraph<T>      //抽象图类
{
    //以下抽象方法没有方法体,由子类提供实现
    public abstract int insertVertex(T x);     //插入顶点
    public abstract void removeVertex(int i); //删除顶点及边
    public abstract int weight(int i, int j);    //边的权值
    protected abstract int next(int i, int j);  //后继邻接顶点
}
  • 问题二:图带权值的边类
  • 解决方案:
public class Triple implements Comparable<Triple>
{
    int row, column, value;           //行、列、元素

    public int compareTo(Triple tri)
          //按行、列位置比较大小,约定排序次序
}
  • 问题三:邻接矩阵表示的带权图类
  • 解决方案:
public class MatrixGraph<T>
                  extends AbstractGraph<T>
{
      protected Matrix matrix;   //存储图的邻接矩阵

      public MatrixGraph(int length)
      public MatrixGraph()
      public MatrixGraph(T[] vertices)
      public MatrixGraph(T[] vertices, Triple[] edges)
                                                   //顶点集和边集构造图
      public String toString()     //图的描述
}

代码托管

本周结对学习情况

其他

  • 数据结构现在应该学的比较完整了,感觉图是对前几个数据结构的一个综合运用,该下功夫整理整理了。

    学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

参考:软件工程软件的估计为什么这么难软件工程 估计方法

(有空多看看现代软件工程 课件

软件工程师能力自我评价表)

参考资料

时间: 2024-08-07 03:38:59

20162327 《程序设计与数据结构》第十一周学习总结的相关文章

20172304 《程序设计与数据结构》 第二周学习总结

20172304 <程序设计与数据结构>第二周学习总结 教材学习内容总结 本周主要学习了第三章和第四章的内容 第三章 集合概述--栈 3.1集合 集合是一种聚集组织了其他对象的对象. 集合可以分为两大类线性集合和非线性集合 线性集合:其元素按直线方式组织的集合. 非线性集合:其元素按某种非直线方式组织的集合.例如按层次结构或按网状结构. 3.1.1抽象数据类型 集合十一找给你隐藏了实现细节的抽象 数据类型:一组值及作用于这些数值上的各种操作. 抽象数据:类型(Absttract Data Ty

20172305 2017-2018-2 《程序设计与数据结构》第一周学习总结

20172305 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书的第一章简单的介绍了计算机和JAVA的历史,基础内容很多,代码的讲解还没用正式进入,本周一直在做敲代码的准备,简单敲了老师给的"Hello World!"以及书后的PP1.3.PP1.4等简单的小程序. 教材学习中的问题和解决过程 问题1:三种不同类型的错误,运行错误和逻辑错误的混淆 问题1解决方案:针对EX1.20的"希望做加法时却做里乘法"进行了网上

20172314 2017-2018-2 《程序设计与数据结构》第一周学习总结

20172314 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令.在接下来的Java编程语言与程序开发部分,开始看的时候有点迷茫,不是很理解,后来先按照作业中附带的流程完成一些代码托管之后,接触了完整的简单的程序之后,再回过头来看书,看到的一些陌生的名词在脑海中就有了实际的对应,

20172317《程序设计与数据结构》第一周学习总结

20172317 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 重新温习了一遍计算机的基础 总算了解了局域网广域网因特网万维网这些东西之间的区别了 通过URL的例子知道了网址各个部分的含义 对Java编程语言和程序开发有了一个粗浅的了解 教材学习中的问题和解决过程 问题:练习题SR1.13出现了答案与题目不相符的情况 问题解决方案:题中有个选项是"网卡",答案中没有,反而有个题目没有的选项"调制解调器"(俗称"

20172322 2017-2018-2 《程序设计与数据结构》第二周学习总结

20172322 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 了解了print与println的区别 了解了字符串的拼接可以用+来完成 了解了转义字符的使用 学会了使用赋值 学会使用部分算术运算符 学会了使用Scanner来实现交互性 教材学习中的问题和解决过程 问题1:在最初接触赋值时对foalt和double的赋值范围不了解 问题1解决方案:使用万能的度娘后看到一个高赞答案后有了了解 问题2:在提前预习时看到2.7图形后敲入的代码无法执行 问题2解决方案

20172328《程序设计与数据结构》第二周学习总结

20172328李馨雨<程序设计与数据结构>第二周学习总结 又到周五,李馨雨同学要开始写博客了.让我们开始吧!(????) 教材学习内容总结 1.首先是String类定义的字符串,然后是print和println的区别.转义字符的学习.(让我印象深刻的\b[回车符]在字符串结尾不显示哈哈,及其更新的\t[换行符],还有在课堂上真正明白了什么是回车.) 2.了解变量.常量.赋值语句.变量:保存数据的内存单元.常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限.去修饰符等等.没实

20172327 2017-2018-2 《程序设计与数据结构》第二周学习总结

20172327 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 字符串的拼接和转义序列的使用 变量的声明和使用 讨论语法及表达式的处理 定义数据转换类型和实现类型转换的机制 创建Scanner类 教材学习中的问题和解决问题 暂无 代码学习中的问题和解决过程 问题1:在提交过程中,突然遇到无法上传的情况 问题2解决方案:通过上网查找,输入git pull之后弹出一个编辑框,选择关闭之后,再次用git push就成功了. 问题2:在按照例题2.10打代码时,Jav

学号20172328《程序设计与数据结构》第九周学习总结

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息

20172326 《程序设计与数据结构》第九周学习总结

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常(exception):定义非正常情况下或错误的情况的对象,由程序或运行时环境抛出,可根据需要进行相应的捕获处理. 异常与错误的区别:错误代表不可恢复的问题并且必须捕获处理.而异常可以忽视,或者使用try语句处理,或调用更高级的方法. 可检测异常与不可检测异常:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来.在方法定义的声明头中追加一条throws子句.不可检测异常不需要使

20172322 2017-2018-2 《程序设计与数据结构》第九周学习总结

20172322 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常 学会了使用try-catch来实现未捕获的异常的处理.可以使得异常被捕获进而不导致程序出现错误退出.使用try写入可能产生异常的语句,使用catch来编写在捕获异常后继续执行的代码(可以为空). "未捕获的异常"指在编译过程中不会被编译软件显示异常但是在运行时会出现异常导致程序直接退出,例如:"ArithmeticException"."In