#include<stdio.h>
#include<stdlib.h>
#define num 8
struct nearnode{
int order;
nearnode* pnext;
};
struct topnode{
char data[20];
nearnode* phead;
};
struct Gra{
topnode top[num];
int topnum;
int sidenum;
};
void create(Gra* gra){
puts("请输入图的弧数
");
scanf("%d",&gra->sidenum);
gra->topnum = num;
for(int i = 0;i < num;i++){
printf("请输入第%d个定点储存的数据信息
",i+1);
scanf("%s",gra->top[i].data);
}
for(int i = 0;i < gra->sidenum;i++){
int temp_one;
int temp_two;
printf("请输入第%d条边的起始顶点
",i+1);
scanf("%d",&temp_one);
printf("请输入第%d条边的终结顶点
",i+1);
scanf("%d",&temp_two);
nearnode* newnode_one = NULL;
newnode_one = (nearnode*)malloc(sizeof(nearnode));
newnode_one->pnext = NULL;
newnode_one->order = temp_one;
if(gra->top[temp_two].phead == NULL){
gra->top[temp_two].phead = newnode_one;
}
else{
for(;gra->top[temp_two].phead->pnext != NULL;gra->top[temp_two].phead = gra->top[temp_two].phead->pnext);
gra->top[temp_two].phead->pnext = newnode_one;
}
nearnode* newnode_two = NULL;
newnode_two = (nearnode*)malloc(sizeof(nearnode));
newnode_two->pnext = NULL;
newnode_two->order = temp_two;
if(gra->top[temp_one].phead == NULL){
gra->top[temp_one].phead = newnode_two;
}
else{
for(;gra->top[temp_one].phead->pnext != NULL;gra->top[temp_one].phead = gra->top[temp_one].phead->pnext);
gra->top[temp_one].phead->pnext = newnode_two;
}
}
}
void viewer(Gra* gra){
for(int i = 0;i < gra->topnum;i++){
printf("第%d个边结点对应的是%c顶点的信息
",i+1,i+65);
}
puts("
");
for(int i = 0;i < gra->topnum;i++){
printf("第%d个顶点储存的信息是:%s
",i+1,gra->top[i].data);
}
puts("
");
for(int i = 0;i < num;i++){
for(;gra->top[i].phead != NULL;gra->top[i].phead = gra->top[i].phead->pnext){
printf("与第%d个顶点相连的边结点的序号为%d
",i+1,gra->top[i].phead->order);
}
}
}
int main(int argc,char** argv){
Gra* gra = NULL;
gra = (Gra*)malloc(sizeof(Gra));
create(gra);
viewer(gra);
}