为了账号安全,请及时绑定邮箱和手机立即绑定
  • 顶点:  

    顶点索引               出弧链表头指针                         顶点数据

        |                                  |                                           |

    顶点索引      第一个出弧的指针(可以是NULL)         顶点数据


    弧的表示方法:

    弧头顶点索引                下一条弧指针                  弧数据

             |                                    |                                |

    弧头顶点(指向的点)        一个点有多个弧              弧数据

                                   每个弧保存下一条弧的指针




    查看全部
  • 邻接表表达图:


    查看全部
  • 顶点和图:

    顶点保存点的索引和数据

    图保存顶点数组和邻接矩阵

    查看全部
  • 邻接矩阵方法:

    查看全部
  • 图->数据

    图的存储结构:

        邻接矩阵(数组)

        邻接表(链表)-->存储有向图

        十字链表(链表)-->存储有向图

        邻接多重表(链表) -->无向图

    查看全部
  • 【图的遍历】深度优先搜索(前序遍历)、广度优先搜索(一层一层搜索)

    【最小生成树】普里姆Prim算法、克鲁斯卡尔Kruskal算法

    1、Prim算法

    • 点集合

    • 边集合

    • 待选边集合

    2、Kruskal算法

    • 待选边集合

    • 已选边集合

    • 已涉及点集合

    查看全部
  • 1、十字链表-链式存储

    • 顶点的表示:顶点索引+顶点数据+以该顶点为弧尾的弧节点指针+以该节点为弧头的弧节点指针

    • 弧:弧尾顶点索引+弧头顶点索引+弧尾相同的下一条弧的指针+弧头相同的下一条弧的指针+弧的数据

    • struct Arc{弧尾顶点索引;弧头顶点索引;指向下一条弧头相同的弧的指针;指向下一条弧尾相同的弧的指针;弧的数据;}

    • struct Node{顶点索引;顶点数据;第一条入弧节点指针;第一条出弧节点指针;}

    • struct Map{顶点数组;}

    2、邻接多重表-链式存储(无向图)

    • 顶点:顶点索引+连接该顶点的边+顶点数据

    • 边:A顶点索引+B顶点索引+与A顶点相连接的下一条边的指针+与B顶点相连接的下一条边的指针+边的数据

    • struct Edge{顶点A索引;顶点B索引;连接A的下一条边的指针;连接B的下一条边的指针;边信息;}

    • struct Node{顶点索引;顶点数据;第一条边节点的指针;}

    • struct Map{顶点数组;}

    查看全部
  • 【图的存储结构】邻接矩阵(用数组表达)、邻接表(链表,有向图)、十字链表(链表,有向图)、邻接多重表(链表,用于表达无向图)

    【权值】弧/边上的数据(比如两个城市之间的某条公路是300km)

    1、邻接矩阵

    • 顶点的表示:顶点索引+顶点数据

    • 有弧的用1表示,没有弧的用0表示,自己和自己用0

    • https://img1.sycdn.imooc.com//5c2cc0bf0001c58205430229.jpg

    • int matrix[4][4];

    • struct Node{顶点索引;顶点数据;}

    • struct Map{顶点数组;邻接矩阵;}

    2、邻接表-链式存储

    • 顶点的表示:顶点索引+出弧链表头指针+顶点数据

    • 弧:弧头顶点索引+下一条弧指针+弧数据

    • 逆邻接表:记录的是 入弧链表头指针 和 弧尾顶点索引

    • struct Node{顶点索引;该顶点弧链表的头结点;顶点数据;}

    • struct Arc{指向的顶点索引;指向下一条弧的指针;弧信息;}

    • struct Map{顶点数组;}

    查看全部
  • 【图】无向图、有向图

    【有向图】每个节点都叫做“顶点”,顶点之间的有方向的连线叫做“弧”

    • 方向箭头的尾端:弧尾

    • 方向箭头的头端:弧头

    • 某个顶点发射出去的箭头数:出度(数)

    • 某个顶点接受到的箭头数:入度(数)

    【无向图】节点为“顶点”;节点间的连线是无方向的(即可以看做双向的),叫做“边”;由边连接的两个顶点为邻接点

    • 连通图:每个顶点都有通往其他顶点的连线(直接/间接)

    • 完全图:任意顶点都与其他顶点有直接的连线,边数=n(n-1)/2

    • 生成树:最少数量的边连接每一个顶点,边数=n-1

    查看全部
    3 采集 收起 来源:课程概述

    2019-01-02

  • 结构体定义
    查看全部
  • 邻接表与逆邻接表:

    顶点:顶点索引,出弧链表头指针,顶点数据;

    弧:弧头顶点索引,吓一跳弧指针,弧数据

    查看全部
  • 顶点结构体:包括顶点索引和顶点数据;

    图的结构体:包括顶点数组和邻接矩阵

    查看全部
  • 顶点结构体:包括顶点索引和顶点数据就行 图的结构体:包括顶点数组(记录顶点)和邻接矩阵(记录边,并且顶点和边的关系)就行 邻接表与逆邻接表:相对于弧的出入顶点说的,如果存储的是弧出顶点的就是邻接表,如果存储的是弧进顶点就是逆邻接表

    查看全部
  • 不用看第二遍

    查看全部
    0 采集 收起 来源:课程概述

    2018-12-03

  • /**	
    * 广度优先遍历	(java实现)
    */	
    public void breadthFirstTraverse(int nodeIndex) {	
    	System.out.print(NodeArray[nodeIndex].date+"  ");	
    	NodeArray[nodeIndex].isVistited = true;		
    	Vector<Integer> v1 = new Vector<Integer>();		
    	v1.add(nodeIndex);		
    	breadthFirst(v1);	
    }		
    public void breadthFirst(Vector<Integer> v1) {	
    	int[] value = new int[1];		
    	Vector<Integer> v2 = new Vector<Integer>();		
    	for(int j = 0; j < (int)v1.size() ; j++) {			
    	    for(int i = 0; i < Capacity ; i++) {				
    	        getValueFromMatrix(v1.get(j), i, value);
    	        if(value[0] != 0) {
    	    	    if(NodeArray[i].isVistited) {
    	    	        continue;
    	    	    }else {
    	    	        System.out.print(NodeArray[i].date+"  ");
    	    	        NodeArray[i].isVistited = true;
    	    	        v2.add(i);
    	    	    }
    	        }
    	    }
         }
         if(v2.size() == 0) {
             return;
         }else {
             breadthFirst(v2);
         }
    }


    查看全部

举报

0/150
提交
取消
课程须知
本课程是数据结构初级课程 1、熟练掌握C++语言基础语法
老师告诉你能学到什么?
1、图的基本概念 2、图的存储方式 3、图的遍历算法 4、图的最小生成树算法 5、图的实际应用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!