shabbyju的博客

天下难事,必做于易;天下大事,必做于细

邻接链表创建图

typedef char VertexType[MAX_VEX];
typedef struct ArcNode
{
    int adjvex;
    struct node *nextarc;
}ArcNode;

typedef struct VexNode
{
    VertexType vertex;
    ArcNode *firstedge;
}VertexNode,AdjList[MAX_VEX];

typedef struct
{
    AdjList vertices;
    int vexnum,arcnum;
    int kind;
}ALGraph;

int LocateVex(ALGraph *G,VertexType u)
{
    int i;
    for(i=0;i<G->vexnum;i++)
        if(strcmp(u,G->vertices[i].vertex)==0)
           return i;
    return -1;
}

void Display(ALGraph *G)
{
    int i = 0;
    ArcNode *p;
    for(i=0;i<G->vexnum;i++)
    {
        p = G->vertices[i].firstedge;
       // printf("The adjvex is :%d",p->adjvex);
        printf("%s",G->vertices[i].vertex);
        while(p)
        {
            printf("->%s",G->vertices[p->adjvex].vertex);
            p=p->nextarc;
        }
        printf("\n");
    }
}

int create(ALGraph *G)
{
    int i,j,k,m;
    VertexType va,vb;
    ArcNode *p;
    printf("please input the number of vex and edge\n");
    scanf("%d %d",&G->vexnum,&G->arcnum);
    printf("please input vertex table\n");
    for(i=0;i<G->vexnum;i++)
    {
        fflush(stdin);
        printf("The vertex is:");
        scanf("%s",G->vertices[i].vertex);
        G->vertices[i].firstedge = NULL;
    }
    printf("please input the edge table\n");
    for(j=0;j<G->arcnum;j++)
    {
        printf("\ninput arc(vi-vj):");
        scanf("%s%s",&va,&vb);
        k = LocateVex(G,va);
        m = LocateVex(G,vb);
        printf("k,m is %d,%d",k,m);
        p = (ArcNode*)malloc(sizeof(ArcNode));
        if(!p)
            exit(-1);
        p->adjvex = m;
        p->nextarc = G->vertices[k].firstedge;
        G->vertices[k].firstedge = p;
        p = (ArcNode*)malloc(sizeof(ArcNode));
        p->adjvex = k;
        p->nextarc = G->vertices[m].firstedge;
        G->vertices[m].firstedge = p;
    }

    return 0;
}

int main(int argc,char** argv)
{
    ALGraph g;
    create(&g);
    Display(&g);
    return 0;
}

参考严蔚敏《数据结构C》.
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_31741803/article/details/52346772
文章标签: 数据结构
个人分类: 数据结构
想对作者说点什么? 我来说一句

图的邻接链表创建方式

2013年09月18日 882B 下载

没有更多推荐了,返回首页

不良信息举报

邻接链表创建图

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭