📄 图的邻接表.txt
字号:
#include "stdio.h"
#include "alloc.h"
#define max 20
#define Null 0
struct arcnode
{ int adjvex;
struct arcnode *nextarc;
};
struct vexelem
{ char data;
struct arcnode *firstarc;
};
typedef struct
{ struct vexelem vex[max];
int vexnum,arcnum;
int kind;
} adjlist;
int locate(adjlist &G, char v1)
{ int i;
for (i=0;i<G.vexnum;i++)
if(G.vex[i].data==v1) return i;
printf("not find");
return -1;
}
void creatdg(adjlist &G)/*有向图的创建*/
{ int i,jv1,jv2;
char v1,v2,ch;
struct arcnode *s;
G.kind=1;
printf("input the num of vertex:");
scanf("%d",&(G.vexnum));
printf("input the num of arcs:");
scanf("%d",&(G.arcnum));
for(i=0;i<G.vexnum;i++)
{ getchar();
printf("input %dth vertex:",i+1);
scanf("%c",&(G.vex[i].data));
G.vex[i].firstarc=Null;
}
for(i=0;i<G.arcnum;i++)
{ getchar();
printf("input %dth edge,FORMAT:(A,B)\n",i+1);
scanf("%c%c%c",&v1,&ch,&v2);
jv1=locate(G,v1);jv2=locate(G,v2);
if(jv1<0 ||jv2<0) {printf("error!!!!!");}
s=(struct arcnode *)malloc(sizeof(struct arcnode));
s->adjvex=jv2;
s->nextarc=G.vex[jv1].firstarc;
G.vex[jv1].firstarc=s;
}
}
void output(adjlist G)/*邻接表的输出*/
{ int i;
struct arcnode *s;
for(i=0;i<G.vexnum;i++)
{printf("%c: ",G.vex[i].data);
s=G.vex[i].firstarc;
while(s)
{printf("--->%4d",s->adjvex);
s=s->nextarc;
}
printf("\n");
}
}
/*其余操作略*/
main()
{ adjlist G;
creatdg(G);
output(G);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -