zoukankan      html  css  js  c++  java
  • 图的邻接表存储方式的建立

    图的邻接表存储方式,主要由表节点与头结点组成。

    头结点中主要包含两个域:

    1)存放顶点信息
    2)存放与顶点相连的第一个表节点的指针

    表节点中主要包含两个域:

    1)存放相连的节点的序号
    2)指向下一个节点的指针

    #define MAXNUM 100
    
    //表节点
    typedef struct ArcNode{
        int adjvex;//邻接顶点编号
        struct ArcNode *next;//下一邻接顶点    
        }ArcNode;
    
    //头结点
    typedef struct AdjList{
        char vdata;//头结点数据信息
        ArcNode *firstarc;    //指向邻接表的第一个表节点
        }AdjList;
    //
    typedef struct Digraph{
        int n,e;//表示图中节点数和边数
        AdjList Head[MAXNUM];//用数组存储头结点    
        }Digraph;
    //创建无向图的邻接表标示法
    void CreatALJGraph(Digraph *G)
        {
         int i,j,k;
         char a;
         ArcNode *s;
         cout<<"输入节点数和边数: "<<endl;//有向图与无向图的边数不同
         cin>>i>>j;
         G->e=j;
         G->n=i;
         cout<<"输入节点信息:"<<endl;
         //建立头结点
         for(int k=0;k<G->n;k++)
             {
              cin>>a;
              G->Head[k].vdata=a;
              G->Head[k].firstarc=NULL;
             }
         //建立表节点
         for(int t=0;t<G->e;t++)
             {
              cin>>i>>j;//读入边(vi,vj)的顶点对序号
              s=(ArcNode*)malloc(sizeof(ArcNode));
              s->adjvex=j;
              s->next=G->Head[i].firstarc;
              G->Head[i].firstarc=s;
              //无向图需要两个顶点都连接,而有向图则只需连接一次即可。
              //等同于头插法建立链表
              s=(ArcNode*)malloc(sizeof(ArcNode));
              s->adjvex=i;
              s->next=G->Head[j].firstarc;
              G->Head[j].firstarc=s;
             }    
        
        }
  • 相关阅读:
    Python 函数
    jQuery的选择器中的通配符
    Spring thymeleaf
    Mybatis 映射关系
    Spring Security学习笔记
    Python中的魔术方法
    Python enumerate
    python lambda表达式
    Vue自定义指令完成按钮级别的权限判断
    elemetUI开关状态误操作
  • 原文地址:https://www.cnblogs.com/day-up/p/4512439.html
Copyright © 2011-2022 走看看