📄 +̤=-+
字号:
/*无向图的邻接表生成和显示*/
#include <stdio.h>
#define MAXVEX 30
typedef char VertexType;
struct edgenode
{
int adjvex; /*邻接点序号*/
VertexType data; /*邻接点信息*/
struct edgenode *next;
};
struct vexnode
{
VertexType data; /*结点信息*/
struct edgenode *link; /*指向下一个边结点*/
};
typedef struct vexnode adjlist[MAXVEX];
void creagraph(adjlist g,int *n)
{
int e,i,s,d;
struct edgenode *p,*q;
printf("结点数(n),边数(e):");
scanf("%d,%d",n,&e);
for (i=1;i<=*n;i++)
{
getchar();
printf(" 第%d个结点信息:",i);
scanf("%c",&g.data);
g.link=NULL;
}
for (i=1;i<=e;i++)
{
printf("第%d条边=>起点序号,终点序号:",i);
scanf("%d,%d",&s,&d);
p=(struct edgenode *)malloc(sizeof(struct edgenode));
q=(struct edgenode *)malloc(sizeof(struct edgenode));
p->adjvex=d;
p->data=g[d].data;
q->adjvex=s;
q->data=g[s].data;
p->next=g[s].link; /*p插入顶点s的邻接表中*/
g[s].link=p;
q->next=g[d].link; /*q插入顶点d的邻接表中*/
g[d].link=q;
}
}
void dispgraph(adjlist g,int n)
{
int i;
struct edgenode *p;
printf("图的邻接表表示如下:n");
for (i=1;i<=n;i++)
{
printf(" [%d,%c]=>",i,g.data);
p=g.link;
while (p!=NULL)
{
printf("(%d,%c)→",p->adjvex,p->data);
p=p->next;
}
printf("∧n");
}
}
main()
{
adjlist g;
int n;
creagraph(g,&n);
dispgraph(g,n);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -