zoukankan      html  css  js  c++  java
  • 第六章小结

    本章,我们学习了图。

    首先是图(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

  • 相关阅读:
    多个数字和数字字符串混合运算规则
    关于js对象引用的小例子
    实现函数 isInteger(x) 来判断 x 是否是整数
    写一个少于 80 字符的函数,判断一个字符串是不是回文字符串
    关于数组排序
    事件委托(事件代理)的原理以及优缺点是什么?
    将url的查询参数解析成字典对象
    js dom操作获取节点的一些方法
    js中arguments的应用
    深度克隆---js对象引用
  • 原文地址:https://www.cnblogs.com/Lnnnn/p/10890873.html
Copyright © 2011-2022 走看看