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

一、本章内容小结

1.基于邻接矩阵的存储       四要素

 1 //-----图的邻接矩阵存储表示----- 
 2 #define Maxint 32767
 3 #define MVNum 100 
 4 typedef char VerTexType; 
 5 typedef int ArcType;
 6 typedef struct 
 7 {
 8      VerTexType vexs [MVNum] ; 
 9      ArcType arcs[MVNum) [MVNum];
10      int vexnum,arcnum; 
11 }AMGraph; 

2.基于邻接表的存储       三要素

1.    //--------邻接表中邻接点的类型定义------    
2.    #define MVNum 100   
3.    typedef struct ArcNode   
4.    {   
5.        int adjvex;   
6.        struct ArcNode * nextarc;   
7.        Otherinfo info;   
8.    }ArcNode;   
9.    //--------邻接表中顶点的类型定义--------   
10.    typedef struct VNode   
11.    {   
12.        VerTexType data;   
13.        ArcNode *firstarc;  
14.    } VNode,AdjList[MVNum];   
15.    //--------图的三要素--------------------   
16.    typedef struct   
17.    {   
18.        AdjList vertices;   
19.        int vexnum,arcnum;   
20.    }ALGraph;   

3.辨析Prim,Kruskal,Dijkstra算法

Kruskal:先选剩余中最小的边,再看是否已包含所有的顶点,即n个顶点,是否有n-1条边

Prim:从任意顶点开始,选择与之相邻的最小边,将另一端的顶点加入,再选现有顶点集相邻的最小边

Dijkstra:与Prim算法有一定相似,选择一点作为源点,按各顶点与源点最短路径长度递增的顺序,除去在V集合中的,把剩下的当中路径最短的选进去,直到所有的点在V中

需要注意的是:1.Prim,Kruska用于求最小生成树,即树的权值和最小;Dijkstra求单源最短路径,即源点到各点最短的路径

                         2.Prim算法与Dijkstra算法方法类似,但有区别。Prim中的最小权值边是基于整个顶点集的,而Dijkstra的最小权值边是基于源点,新加入的点只是作为中转点。

                           Prim算法的辅助数据结构closedge[]在更新时,更新到邻接点;而Dijkstra算法的辅助数据结构D[]更新到源点,要求和

附一道例题:

posted @ 2020-06-14 00:11  甘番雨  阅读(141)  评论(0编辑  收藏  举报