图的建立
图的建立及遍历输出建立图的存储结构(可以使有向图,无向图,有向网,无向网,可任选两种类型),实现图的深度优先或广度优先遍历算法。要求能够输入图的顶点和边的信息,并存储到相...
图的建立及遍历输出
建立图的存储结构(可以使有向图,无向图,有向网,无向网,可任选两种类型),实现图的深度优先或广度优先遍历算法。
要求能够输入图的顶点和边的信息,并存储到相应存储结构中。
最后输出图的邻接矩阵及遍历结果。
高分求高手提供能在VC上运行的程序,感谢! 展开
建立图的存储结构(可以使有向图,无向图,有向网,无向网,可任选两种类型),实现图的深度优先或广度优先遍历算法。
要求能够输入图的顶点和边的信息,并存储到相应存储结构中。
最后输出图的邻接矩阵及遍历结果。
高分求高手提供能在VC上运行的程序,感谢! 展开
展开全部
建立图的存储结构(图的类型可以使有向图、无向图可以任选一种类型)能够输出邻接矩阵。我们的课设题目,你可以参考一下,多多指教!
代码如下:
#include "stdio.h"
#define MAXVEX 100
#include "string.h"
#include "math.h"
#include "conio.h"
typedef char VertexType;
struct vertex
{
int num;
VertexType data;
};
typedef struct graph
{
struct vertex vexs[MAXVEX];
int edges[MAXVEX][MAXVEX];
}adjmax;
adjmax creagraph(int *n)
{
int i,j,k,w,e;
char b,t;
adjmax adj;
printf("顶点数(n)和边数(e):");
scanf("%d,%d",n,&e);
for (i=1;i<=*n;i++)
{
getchar();
printf("\t第%d个顶点的信息:",i);
scanf("%c",&adj.vexs[i].data);
adj.vexs[i].num=i;
}
for(i=1;i<=*n;i++)
for(j=1;j<=*n;j++)
adj.edges[i][j]=0;
for(k=1;k<=e;k++)
{
getchar();
printf("第%d条边=》",k);
printf(" 起点: ");
b=getche();
i=1;
while(i<=*n && adj.vexs[i].data!=b) i++;
if(i>*n)
{
printf("输入的起点不存在!\n"); exit(0);
}
printf(" 终点:");
t=getche();
j=1;
while(j<=*n && adj.vexs[j].data!=t) j++;
if(j>*n)
{
printf("输入的终点不存在!\n"); exit(1);
}
printf(" 权值:");
scanf("%d",&w);
adj.edges[i][j]=w;
}
return(adj);
}
void dispgraph(adjmax adj, int n)
{
int i,j;
printf("\n显示邻接矩阵表示的图:\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(adj.edges[i][j]!=0)
printf("(%c,%c): %d\n",adj.vexs[i].data,adj.vexs[j].data,adj.edges[i][j]);
}
main()
{
adjmax adj;
int n;
adj=creagraph(&n);
dispgraph(adj,n);
}
参考资料:数据结构导学
代码如下:
#include "stdio.h"
#define MAXVEX 100
#include "string.h"
#include "math.h"
#include "conio.h"
typedef char VertexType;
struct vertex
{
int num;
VertexType data;
};
typedef struct graph
{
struct vertex vexs[MAXVEX];
int edges[MAXVEX][MAXVEX];
}adjmax;
adjmax creagraph(int *n)
{
int i,j,k,w,e;
char b,t;
adjmax adj;
printf("顶点数(n)和边数(e):");
scanf("%d,%d",n,&e);
for (i=1;i<=*n;i++)
{
getchar();
printf("\t第%d个顶点的信息:",i);
scanf("%c",&adj.vexs[i].data);
adj.vexs[i].num=i;
}
for(i=1;i<=*n;i++)
for(j=1;j<=*n;j++)
adj.edges[i][j]=0;
for(k=1;k<=e;k++)
{
getchar();
printf("第%d条边=》",k);
printf(" 起点: ");
b=getche();
i=1;
while(i<=*n && adj.vexs[i].data!=b) i++;
if(i>*n)
{
printf("输入的起点不存在!\n"); exit(0);
}
printf(" 终点:");
t=getche();
j=1;
while(j<=*n && adj.vexs[j].data!=t) j++;
if(j>*n)
{
printf("输入的终点不存在!\n"); exit(1);
}
printf(" 权值:");
scanf("%d",&w);
adj.edges[i][j]=w;
}
return(adj);
}
void dispgraph(adjmax adj, int n)
{
int i,j;
printf("\n显示邻接矩阵表示的图:\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(adj.edges[i][j]!=0)
printf("(%c,%c): %d\n",adj.vexs[i].data,adj.vexs[j].data,adj.edges[i][j]);
}
main()
{
adjmax adj;
int n;
adj=creagraph(&n);
dispgraph(adj,n);
}
参考资料:数据结构导学
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询