第六章小结

本章,我们学习了图。

首先是图(GRAPH)的定义

一种非线性数据结构,由有穷、非空的点集V(G)和边集E(G)组成。当G中的每条边有方向时,称G为有向图,有向边(用一对尖括号<a,b>)又称为弧,起始顶点被称为弧尾,终止顶点被称为弧头,每条边无方向时(用一对括号表示(a,b)和(b,a)一样),被称为无向图。

图的存储方式

1.邻接矩阵(二维数组存储)

 

 void creat(vexList GV, adjmatrix GA, int n,int e)

   {

    int i,j,k,w;

    cout << "输入"<<n<<"个顶点的值:"<<endl;

    //初始化顶点数组

    for(int i = 0; i < n; i++)     

     { cin>>GV[i];}

    //初始化邻接矩阵  

     for(int i = 0; i < n; i++) 

        for(int j = 0; j < n; j++)

    {if(i==j) GA[i][j] = 0;

         else  GA[i][j] = maxValue;

        }

    //建立邻接数组

      cout << "输入"<<e<<"条边:"<<endl;

      for(int k = 0; k < e; k++)

        {cin >> i >> j >>w;

         GA[i][j] =GA[j][i] = w;

        }

    }

2.邻接表存储

3.编辑数组

然后是本章的重点

邻接矩阵表示法的特点:

优点是容易实现图的操作。

缺点是空间效率为O(n2)。对稀疏图浪费空间。

 

图的遍历

DFS:从图中某个顶点V0 出发,访问此顶点,然后依次从V0的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被访问到

BFS:在访问了起始点v之后,依次访问 v 的邻接点; 然后再依次访问这些顶点中未被访问过的邻接点; 直到所有顶点都被访问过为止。

在这周我们还学习了求最短路径的方法,我觉得很有意思。

分别是Dijkstra算法和Floyd算法。

 

对于上次的目标,首先敲代码的积极性有提高,但pta的作业还是卡着ddl完成的,然后就是上课有时候会有点走神,导致有些小细节要课后去问同学才行,就还是希望自己能够把学习当做乐趣而不是工作。

ps:图片来自CSDN

 

posted @ 2019-05-19 21:20  Lnnnnᐛ  阅读(139)  评论(0编辑  收藏  举报