数据结构第六章小结
邻接矩阵
#define MNNum 100//最大顶点数 typedef char VerTexTypre;//顶点的数据类型 typedef int ArcType;//顶点的权值类型 typedef struct { VerTexType vexs[MVNum];//顶点表 ArcType arcs[MVNum][MVNum];//邻接矩阵 int vexnum, arcnum;//图的点数和边数 }AMGraph;
邻接表
#define MVNum 100//最大顶点数 typedef struct ArcNode//边结点 { int adjvex;//该边的顶点位置 struct ArcNode *nextarc;//指向下一条边的指针 otherInfo info;//和边相关的信息,比如权值 }ArcNode; typedef struct VNode//顶点信息 { VerTexType data; ArcNode *firstarc;//指向第一条依附该顶点的边的指针 }VNode, AdjList[MVNum];//邻接表的类型 typedef struct { AdjList vertices; int vexnum,arcnum; }ALGraph;
6.2个人小测
第三题,其实自己已经注意到了题目给的坑,先从0开始访问顶点,再从顶点所在的行的后面开始访问!!可是自己存在两个问题,没有注意到是从0开始的,所以我是把他们改成了从下标1开始,第二个问题就是第0个是独立的,而我却直接把它略过,从题目所说的第1(我的第二)开始。这就导致了我得了零分!!然后我觉得我还是得仔细的阅读题目,而且不要手忙脚乱的太慌。
6.8练习
单元最小路径,因为老师讲课的时候是没有图里面的数据,在练习里面是有数据(A,B,C,)之类的,然后我应该要把数据换成整型,这样在刷新的时候才能做到数组元素一致。两个顶点是否有边,而我却考虑成两个顶点之后存在路径,问题复杂化,导致自己写出来的代码很奇怪,也搞不太懂。听了老师讲解才觉得如此简单!!!
在这次的pta作业第六章作业中,我觉得这道题好微妙!!就是在于必须要认真 的考虑到刷新visited数组的情况,因为有bfs和dfs都要用到。或者说直接用两个全局变量数组visit和visited也是可以解决的!!!
dfs和bfs生成的树的高度是怎样的?
bfs生成的树与dfs的树一样高或者是更高。因为dfs生成树的是否是按照每个点到根节点的距离是最短的,而bfs就没有这个限制
心得:
这章的知识点有点点的多,主要是各种算法,遍历的算法bfs,dfs以及最短路径和最小生成树的算法。但是只要自己去过了一遍,感觉还是挺好理解的,最近发现结合表格好像更容易理解!!!如果把pta的所有题目都当做练习弄懂收获还是很大的!!之前还总是懵懵懂懂的选择判断,以为敲代码才是最重要的。希望自己以后要多多改变常规的思维,不要有很大的限制。而且要仔仔细细的看书,把知识点弄懂,这样在做选择判断题的时候才不会懵懵懂懂!!