数据结构:第6章学习小结

一、学习内容

1.第六章主要学习内容为图,相对于之前其他的数据结构,图显得比较复杂,考虑问题需要考虑有向图,无向图

2.本章学习了两个存储图的算法:邻接矩阵,邻接表;邻接矩阵适合稠密图,邻接表适合稀疏图

邻接矩阵
const int MVNum = 100;//最大顶点数
typedef srruct{
     char vexs[MVNum];//顶点表
     int arcs[MVNum][MVNum];//邻接矩阵
     int vexnum,arcnum;//图的当前点数和边数
}AMGraph
邻接表
typedef MVNum = 100;
typedef struct ArcNode{
    int  adjvex;//该边所指向的顶点的位置
    struct ArcNode *nextarc;//指向下一条边的指针
    OtherInfo  info;//和边相关的信息,如权值;
}ArcNode;
typedef struct{
      char data;//顶点信息
      ArcNode *firstarc;//指向第一条依附该顶点的弧
}VNode,AdjList[MVNUM];
typedef struct{
      AdjList Vertices;//邻接表
      int vexnum,arcnum;//定点数和边数
}

3.图的遍历主要有两种:广度优先遍历(BFS)和深度优先遍历(DFS)

广度优先遍历会优先遍历当前结点附近所以结点,可以说是像声波扩散一样;

深度优先搜索会在当前结点往下一个结点走到最后一个结点;

4.最小生成树

1.Prim算法,以顶点为考虑条件,选择时prim算法会筛选顶点不围成连通图,更适用于稠密图;

2.Kruskal算法:以边为考虑条件,选择边的最小权值,也会筛选不形成连通图,适用于稀疏图;

所生成的最小树并不是唯一的,当存在权值一样得到边时,就会导致出现不一样的最小数。

二、学习心得

本章图是一个新的数据结构,我的掌握程度不够好,只能理解所学算法的运行过程,自己很难去复现代码,就接下来的时间要多写代码,尽量能够做到自行复现;

PTA上的题目也没能够很好掌握,需要找到解题的好方法,开阔思维

posted @ 2020-06-14 20:51  伞兵一号篓本韦  阅读(223)  评论(0编辑  收藏  举报