大神们帮小弟我看看 是图的创建出有关问题了 还是图的输出出有关问题了 帮忙运行看看
大神们帮我看看 是图的创建出问题了 还是图的输出出问题了 帮忙运行看看 在线等
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct arcnode
{
//弧结点定义
int adjvex;//该弧所指的顶点信息
struct arcnode *next;//指向下一条弧
}arcnode;
typedef struct vnode //顶点结点
{
char data; //顶点信息
arcnode *firstarc;//指向第一条依附该顶点的弧
}vernode ;
typedef vernode adjlist[100];
//图的结构定义
typedef struct
{
adjlist ver;
int vernum,arcnum;
}graph;
int location(graph &g,char c)//查找元素的位置
{
for(int i=0;i<g.vernum;i++)
if(g.ver[i].data==c)
return i;
else
return -1;
}
void create(graph &g)//创建无向图
{
int i,j,k;
char v1,v2;
int temp;
printf("请输入图的顶点和弧数:\n");
scanf("%d%d",&g.vernum,&g.arcnum);
temp=getchar();
printf("输入%d顶点\n",g.vernum);
for(i=0;i<g.vernum;i++)
{
printf("输入第%d顶点",i+1);
scanf("%c",&g.ver[i].data);
temp=getchar();
g.ver[i].firstarc=NULL;//边表置空
}
//建立边
printf("输入弧的信息\n");
printf("输入%d条弧",g.arcnum);
printf("\n");
for(k=0;k<g.arcnum;k++)
{
printf("输入第%d条弧",k+1);
scanf("%c%c",&v1,&v2);//输入表示弧<vi,vj>的顶点序
i=location(g,v1);
j=location(g,v2);
temp=getchar();
arcnode *p1;
p1=(arcnode *)malloc(sizeof(arcnode));//生成边表结点
p1->adjvex=j; //邻结点信息
p1->next=g.ver[i].firstarc;
g.ver[i].firstarc=p1;//将新结点插入到边表头部
}
printf("有向图建立完成\n");
}
/*------------------------------输出图的信息-------------------*/
void printGra(graph g)
{
arcnode *p;
int i;
printf("图中有%d个顶点,%d条弧:\n",g.vernum,g.arcnum);
for(i=0;i<g.vernum;i++)
{
p=g.ver[i].firstarc;
printf("%c\n",g.ver[i].data);
while(p)
{
printf("<%c,%c>",g.ver[i].data,g.ver[p->adjvex].data);
p=p->next;
}
printf("\n");
}
}
void main()
{
int i;
graph g;
create(g);
printGra(g);
printf("\n");
}
------解决方案--------------------
什么错误提示呀
------解决方案--------------------
书上的,应该没问题
------解决方案--------------------
我试了没问题啊!~
------解决方案--------------------
是不是你测试时 输入有问题啊!
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct arcnode
{
//弧结点定义
int adjvex;//该弧所指的顶点信息
struct arcnode *next;//指向下一条弧
}arcnode;
typedef struct vnode //顶点结点
{
char data; //顶点信息
arcnode *firstarc;//指向第一条依附该顶点的弧
}vernode ;
typedef vernode adjlist[100];
//图的结构定义
typedef struct
{
adjlist ver;
int vernum,arcnum;
}graph;
int location(graph &g,char c)//查找元素的位置
{
for(int i=0;i<g.vernum;i++)
if(g.ver[i].data==c)
return i;
else
return -1;
}
void create(graph &g)//创建无向图
{
int i,j,k;
char v1,v2;
int temp;
printf("请输入图的顶点和弧数:\n");
scanf("%d%d",&g.vernum,&g.arcnum);
temp=getchar();
printf("输入%d顶点\n",g.vernum);
for(i=0;i<g.vernum;i++)
{
printf("输入第%d顶点",i+1);
scanf("%c",&g.ver[i].data);
temp=getchar();
g.ver[i].firstarc=NULL;//边表置空
}
//建立边
printf("输入弧的信息\n");
printf("输入%d条弧",g.arcnum);
printf("\n");
for(k=0;k<g.arcnum;k++)
{
printf("输入第%d条弧",k+1);
scanf("%c%c",&v1,&v2);//输入表示弧<vi,vj>的顶点序
i=location(g,v1);
j=location(g,v2);
temp=getchar();
arcnode *p1;
p1=(arcnode *)malloc(sizeof(arcnode));//生成边表结点
p1->adjvex=j; //邻结点信息
p1->next=g.ver[i].firstarc;
g.ver[i].firstarc=p1;//将新结点插入到边表头部
}
printf("有向图建立完成\n");
}
/*------------------------------输出图的信息-------------------*/
void printGra(graph g)
{
arcnode *p;
int i;
printf("图中有%d个顶点,%d条弧:\n",g.vernum,g.arcnum);
for(i=0;i<g.vernum;i++)
{
p=g.ver[i].firstarc;
printf("%c\n",g.ver[i].data);
while(p)
{
printf("<%c,%c>",g.ver[i].data,g.ver[p->adjvex].data);
p=p->next;
}
printf("\n");
}
}
void main()
{
int i;
graph g;
create(g);
printGra(g);
printf("\n");
}
------解决方案--------------------
什么错误提示呀
------解决方案--------------------
书上的,应该没问题
------解决方案--------------------
我试了没问题啊!~
------解决方案--------------------
是不是你测试时 输入有问题啊!