• 采用邻接表创建

    完整代码:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define MAXVEX 20
    //邻接表表示
    typedef char VertexType;
    //边表
    typedef struct EdgeNode
    {
    int adjvex;//连接上节点的下标
    struct EdgeNode* next;
    }EdgeNode;
    //顶点表
    typedef struct VertexNode
    {
    VertexType data;
    EdgeNode* firstedge;//边表的头指针    
    }VertexNode,AdjList[MAXVEX];
    typedef struct
    {
    AdjList adjlist;//邻接表
    int numVertexs,numEdges;//顶点数,边数
    }GraphAdjList;
    //创建
    void Create(GraphAdjList*  G)
    {
    int i,j,k;
    EdgeNode* p;
    printf("输入顶点数和边数
    ");
    scanf("%d%d",&G->numVertexs,&G->numEdges);
    //顶点
    printf("输入顶点信息:
    ");
    for(i=0;i<G->numVertexs;i++)
        {
        getchar();
        scanf("%c",&G->adjlist[i].data);
        G->adjlist[i].firstedge=NULL;
        }
    //边(边的两头为顶点下标)
    printf("输入边(Vi,Vj)中的下标i,j:
    ");
    for(k=0;k<G->numEdges;k++)
        {
        scanf("%d%d",&i,&j);
        p=(EdgeNode*)malloc(sizeof(EdgeNode));//包括当前连接上的节点,以及下一个节点
    //连接上的节点
        p->adjvex=j;
        //采取头插法
        /*
        先把顶点i的第一个连接的位置和p上,然后顶点i再与p连接
        */
        p->next=G->adjlist[i].firstedge;
        G->adjlist[i].firstedge=p;//表邻接表给相应的节点
        //下面代码,无向图中有;如果是有向图就没有
        p=(EdgeNode*)malloc(sizeof(EdgeNode));
        p->adjvex=i;
        p->next=G->adjlist[j].firstedge;
        G->adjlist[j].firstedge=p;
        }
    //打印邻接表
    printf("邻接表为:
    ");
    for(i=0;i<G->numVertexs;i++)
        {
        p=G->adjlist[i].firstedge;
        while(p)
            {
            printf("(%c,%c)",G->adjlist[i].data,G->adjlist[p->adjvex].data);
            p=p->next;
            }
        printf("
    ");
        }
    }
    
    
    int main()
    {
    GraphAdjList G;
    Create(&G);
    }

    结果:

  • 相关阅读:
    周志华 机器学习
    王亮 中国科学院自动化研究所
    殷明 合肥工业大学
    批处理命令行 for循环
    CalFrechetDist
    等高线简化线方法对比(多尺度评价方法)
    周成虎
    MFC 使用控制台打印程序信息
    C++ 获得本地磁盘盘符的容量信息
    VS2012+CUDA6.0配置方法
  • 原文地址:https://www.cnblogs.com/miaobo/p/12493430.html
Copyright © 2020-2023  润新知