zoukankan      html  css  js  c++  java
  • 图的邻接表存储

    邻接表是图的一种链式存储结构。

    在邻接表中,对图中的每一个定点建立一个单链表,第i个单链表中的结点表示依附于定点vi的边。

    每一个结点由三个域构成,表节点,头结点,还有存储图的。

    假设像构建下图的一个图的结构


    那么程序例如以下:

    #include<stdio.h>
    #include<stdlib.h>
    #define  MAXNUM 100
    typedef struct node   //边表节点
    {
       int adjvex;
       struct node* next;
    }EdgeNode;
    
    typedef struct     //顶点表节点
    {
       char vertex;
       EdgeNode* firstedge;
    }VertexNode;
    
    typedef struct
    {
        VertexNode adjlist[MAXNUM];
        int n,e;
    
    }ALGraph;
    void create(ALGraph* G)
    {
        int i,j,k,w,v;
        EdgeNode *s;
        printf("读入顶点数和边数");
        scanf("%d,%d",&G->n,&G->e);
    
    
       for (i=0;i<G->n;i++)
       {
           fflush(stdin);
           printf("建立顶点表");
           G->adjlist[i].vertex=getchar();
           G->adjlist[i].firstedge=NULL;
       }
       printf("建立边表
    ");
       for (k=0;k<G->e;k++)
       {
           printf("读入(vi-vj)的顶点对序号");
           scanf("%d,%d",&i,&j);
           s=(EdgeNode*)malloc(sizeof(EdgeNode));
           s->adjvex=j;
           s->next=G->adjlist[i].firstedge;  //插入表头
           G->adjlist[i].firstedge=s;
           s=(EdgeNode*)malloc(sizeof(EdgeNode));
           s->adjvex=i;
           s->next=G->adjlist[j].firstedge;
           G->adjlist[j].firstedge=s;
    
       }
    }
    int main()
    {
        int i;
        ALGraph* G= (ALGraph*)malloc(sizeof(ALGraph));
        create(G);
        for (i=0;i< G->n;i++)
        {
           printf("%d->",i);
           while(G->adjlist[i].firstedge!=NULL)
           {
                printf("%d->",G->adjlist[i].firstedge->adjvex);
                G->adjlist[i].firstedge=G->adjlist[i].firstedge->next;
    
           }
           printf("
    ");
        }
    }
    


  • 相关阅读:
    OneDay!——冲刺日志9(05-06)
    Hail_Hydra2—代码规范
    Hail_Hydra2—凡事预则立
    Alpha冲刺的问题总结
    Hail_Hydra2—冲刺日志集合
    Hail_Hydra2—总结随笔
    Hail_Hydra2—测试随笔
    Hail_Hydra2—冲刺日志(10)
    Hail_Hydra2—冲刺日志(9)
    Hail_Hydra2—冲刺日志(8)
  • 原文地址:https://www.cnblogs.com/llguanli/p/8717082.html
Copyright © 2011-2022 走看看