📄 图的领接表创建.c
字号:
/*****************************************************/
/* 图的邻接表创建算法 */
/* 文件名c_ljb.c 函数名:createadjgraph() */
/*****************************************************/
#include <stdio.h>
#include "adjgraph.h"
#include <stdlib.h>
/*------建立无向图的邻接表算法-------*/
void createadjgraph(adjgraph *g)
{ int i,j,k;
edgenode *s;
printf("Please input n and e:\n");
scanf("%d%d",&g->n,&g->e); /*输入顶点数与边数*/
getchar();
printf("Please input %d vertex:",g->n);
for(i=0;i<g->n;i++)
{
scanf("%c",&g->adjlist[i].vertex); /*读入顶点信息*/
g->adjlist[i].firstedge=NULL; /*边表置为空表*/
}
printf("Please input %d edges:",g->e);
for(k=0;k<g->e;k++) /*循环e次建立边表*/
{
scanf("%d%d",&i,&j); /*输入无序对(i,j)*/
s=(edgenode *)malloc(sizeof(edgenode));
s->adjvex=j; /*邻接点序号为j*/
s->next=g->adjlist[i].firstedge;
g->adjlist[i].firstedge=s; /*将新结点*s插入顶点vi的边表头部*/
s=(edgenode *)malloc(sizeof(edgenode));
s->adjvex=i; /*邻接点序号为i*/
s->next=g->adjlist[j].firstedge;
g->adjlist[j].firstedge=s; /*将新结点*s插入顶点vj的边表头部*/
}
}
/*---函数print():输出邻接表存储结构---*/
void print(adjgraph g)
{ edgenode *p;
int i;
for (i=0;i<g.n;i++)
{ printf("%c ",g.adjlist[i].vertex);
p=g.adjlist[i].firstedge;
while (p)
{ printf("%d-->",p->adjvex);
p=p->next;
}
printf("\n");
}
}
/*主函数*/
/*
main()
{adjgraph g;
createadjgraph(&g);
print(g);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -