码迷,mamicode.com
首页 > 其他好文 > 详细

第六章学习小结

时间:2020-06-14 20:53:21      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:优先   深度   max   个人   a算法   序列   kruskal   class   str   

一.图的概念:

1.图、无向图、有向图、完全图

2.度、入度、出度

3.路径:由顶点和相邻顶点序偶构成的边所形成的序列

4.连通图、连通分量(无向图)

5.强连通图、连通分量:极大强连通子图(有向图)

二. 图的存储结构:

1.邻接矩阵

typedef struct
{
    char vexs[maxvexs];//顶点表
    int arc[maxvexs][maxvexs];//邻接矩阵
    int vertexes,edges;//图的顶点与边
}graph;

2.邻接表

typedef struct EdgeNode
{
    int adjvex; //邻接点域,存储该顶点对应的下标
    int weight; //用于存储权值
    struct EdgeNode *next;  //指向下一个邻接点
}EdgeNode;//边表结点
 
typedef struct VertexNode //顶点表结点
{
    char data; //顶点域,存储顶点信息
    EdgeNode *firstedge; //边表头指针
}VertexNode,AdjList[MAXVEX];
 
typedef struct
{
    AdjList adjList;
    int numVertexes,numEdges;//图中当前顶点数和边数
}GraphAdjList;

三.图的遍历

1.BFS(广度优先遍历)

2.DFS(深度优先遍历)

四.最小生成树

Prim算法:针对顶点,对于稠密图(边数非常多的情况)更好;
Kruskal算法:针对边,对于稀疏图(边数少)时更好。

五.最短路径

Dijkstra算法:按边的径权值递增的次序产生最短路径

算法的思路并不算难,但要将其变为能让计算机跑起来的代码就有难度了

学习心得:图的内容感觉是数据结构中较为困难的内容,现阶段对图的掌握也没有这么理想,在个人小测中也因为没有仔细审题而踩到了坑。PTA上的踩鳄鱼问题也是一开始完全不知道该如何下手,感觉自己第六章白学了一样。所以以后还是要多动手敲代码,不要偷懒,只有自己认真的把代码写出来,一点点完善,才能使自己的印象更深刻。

第六章学习小结

标签:优先   深度   max   个人   a算法   序列   kruskal   class   str   

原文地址:https://www.cnblogs.com/GJJbk/p/13126446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!