图的邻接表算法

来源:互联网 发布:caffe入门教程用什么 编辑:程序博客网 时间:2024/05/29 04:47
#define maxvernum 100//最大顶点数为100typedef struct node  //边表结点{int adjvex;//邻接点域struct node * next;//指向下一个邻接点的指针域}Edgenode;typedef struct vnode//表头结点{int vertex;//顶点域Edgenode * link;//边表头指针}Vexnode;typedef Vexnode adjlist[maxvernum];//adjlist是邻接表类型typedef struct{adjlist adjlist;//邻接表int n,e;//顶点数和边数}Adjgraph;//Adjgraph是以邻接表方式存储的图类型//有向图的算法如下:void greatealgraph(Adjgraph * g)//建立有向图的邻接表存储{int i,j,k;Edgenode * s;printf("请输入顶点数和边数(输入格式为:顶点数,边数):\n");scanf("%d,%d",&(g->n),&(g->e));printf("请输入顶点信息(输入格式为:顶点号<CR>):\n");for(i=0;i<g->n;i++)//建立有n个顶点的顶点表{scanf("\n%c",&(g->adjlist[i].vertex));g->adjlist[i].link=NULL;//设为空表头指针}printf("请输入边的信息(输入格式为:i,j):\n");for(k=0;k<g->e;k++)//建立边表{scanf("\n%d,%d",&i,&j);//读入边<vi,vj>的顶点对应序号s=(Edgenode*)malloc(sizeof(Edgenode));//生成新的边表结点ss->adjvex=j;//邻接点序号为js->next=g->adjlist[i].link;g->adjlist[i].link=s;}}
原创粉丝点击