• 图存储4-邻接多重表


    http://blog.csdn.net/doubleselect/article/details/40151877

    1.引言:

       如果我们在应用中关注的是顶点 ,那么邻接表是很好的选择 ,可是如果是重点关注边 那么 邻接表就麻烦了


    若要删除左边的(V0,V2)这条边,需要对图下表的阴影两个结点进行删除操作。


    2.邻接多重表的存储结构:


    iVex和jVex:是与某条边依附的两个顶点在顶点表中的下标。

    iLink:指向依附顶点iVex的下一条边。

    jLink:指向依附顶点jVex的下一条边。


    3.邻接多重表示意图绘制:

    邻接多重表  
      
    typedef char Vtype //顶点类型    
    typedef int Etype //权值类型    
    #definde MAXV 100;    
    typedef struct edgeNode // 边  表示边的个数    
    {   
        int ivex; //一条边的一端   
        int jvex; //一条边的另一端   
        struct edgeNode *ilink; //依赖于顶点ivex的下一条边   
        struct edgeNode *jlink;//依赖于顶点jvex的下一条边  
        type weight;//边 权值  
    }EdgeNode;    
        
    typedef struct Vnode //顶点表 节点    
    {    
        Vtype data;    
        EdgeNode* firstEdge; //对应的一个边  
    }VNODE; //    
        
    typedef struct    
    {    
        VNODE adjlist[MAXV];    
        int numV;//当前顶点数    
        int numE;//当前边数    
    }GraphAdjList;      
        
    void CreateALGraph(GraphAdjList* G)    
    {    
        int i,j,k;    
        EdgeNode* e= NULL;    
        cout<<输入顶点数";    
        cin>>G->numV;    
        cout<<输入边数";    
        cin>>G->numE;    
        for(i=0;i<G->numV;i++)//建立顶点信息    
        {    
            cin >> G->adjlist[i].data; //输入顶点信息    
            G->adjlist[i].firstEdge = NULL; //边表节点 为空  
        }  
        for(k=0;k<G->numE;k++)//建立边信息    
        {    
            cout<<"输入边的开始";      
            cin>>i;      
            cout<<"输入边的结尾";      
            cin>>j;    
              //注意每次插入新节点都是在链表的表头进行   有点绕
            e = new EdgeNode; //(1,3) 这个线的插入是相互的对于两个点1,3来说 分别不同的因此有两个new    
            e->ivex = i;    
            e->ilink = G->adjlist[i].firstEdge;//以前是e->next = j...的。现在是当前的
            G->adjlist[i].firstEdge = e; 
    		
            e->jvex = j;
            e->jlink = G->adjlist[j].firstEdge;  
            G->adjlist[j].firstEdge = e;  
        }     
    }    
    




    关注公众号 海量干货等你
  • 相关阅读:
    hive分区学习
    pyspark的学习
    往hive表中插入数据以及导出数据
    【Pytest学习3】setup和teardown简单用法,fixture里面的scope等于setup,用yield等于teardown
    【Pytest学习2】 pytest用例设计规则,terminal中使用常见命令行参数,pycharm中使用常见的命令行参数
    Jmeter响应内容显示乱码问题的解决办法
    Jmeter(三)测试计划和线程组
    Jmeter(二)Jmeter目录介绍 & 元件介绍
    JMeter之Ramp-up Period(in seconds)说明
    badboy云盘下载链接
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734474.html
Copyright © 2020-2023  润新知