图的邻接矩阵储存算法问题
#include<stdlib.h>
#include<string.h>
/********************************图的存储结构定义***********************/
#define MaxVerNum 30
#define Vextype char
#define EdgeInfoType int
#define INF 999 //无穷大
#define MAXSIZE 100
typedef struct
{
Vextype vexs[MaxVerNum];
EdgeInfoType edges[MaxVerNum][MaxVerNum];
int n,e;
}MGragh;
int visited[MaxVerNum]; //顶点访问标记
void CreateGraph(MGragh *g)
{
int i,j,k,w;
printf("请输入顶点数和边数(输入格式为:顶点数,边数):\n");
scanf("%d,%d",&(g->n),&(g->e));
printf("请输入顶点信息(输入格式为:顶点号):\n");
for(i=0;i<g->n;i++)
scanf("%c\n",&(g->vexs[i]));
//初始化邻接矩阵
for(i=0;i<g->n;i++)
for(j=0;j<g->n;j++)
g->edges[i][j]=INF;
printf("请输入每条边对应的两个顶点的序号及每条边的权重 (输入格式为:i,j,k):"); //程序运行到这一步直接跳过接下来的for循环,这是为什么?
for(k=0;k<g->e;k++)
{
scanf("%d,%d,%d",&i,&j,&w);
g->edges[i][j]=w; //此为有向图的邻接矩阵储存建立
}
}
//打印图(邻接矩阵)
void printGragh(MGragh *g)
{
printf("\n图G的邻接矩阵\n");
printf("顶点:\n");
for(int i=0;i<g->n;i++)
{
printf("%c\t",g->vexs[i]);
}
printf("\n邻接矩阵:\n");
for(int i=0;i<g->n;i++)
{
for(int j=0;j<g->n;j++)
{
printf("%d\t",g->edges[i][j]);
}
printf("\n");
}
}
MGragh *init_MGraph()
{
MGragh *mg=(MGragh *)malloc(sizeof(MGragh));
if(mg)
{
mg->n=0;
mg->e=0;
}
return mg;
}
int main()
{
//创建图(邻接矩阵)
MGragh *mG=init_MGraph();
CreateGraph(mG);
printGragh(mG);
}
...全文
相关推荐
shujujiegou.rar_shujujiegou_图的储存
图"作为一种重要的数据结构,广泛应用于各种算法和系统设计中。"shujujiegou.rar_shujujiegou_图的储存"这个压缩包文件显然涉及到图的数据结构及其存储方式。
邻接矩阵储存无向图 -下载即用.zip
这种方式不仅可以直观地反映出整个图的连接结构,而且便于实现多种图论算法。在实际应用中,将无向图的数据存储为邻接矩阵,并通过计算机程序对其进行读写操作是十分常见的。
数据结构课程设计--公园导游图
【数据结构课程设计--公园导游图】是一篇关于利用数据结构知识解决实际问题的论文,主要涉及了数据结构中的链表、线性表、图的储存结构、图的遍历以及寻找最短路径的算法。以下是对这些知识点的详细解释:1.
java实现最短路径算法之Dijkstra算法
图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。
可视化计算图论基础与应用PPT学习教案.pptx
Path):使用 Dijkstra 算法* 地图着色 (Map Coloring):四色定理* 最小支配集问题 (Minimum Dominating Set):城镇商业网点的配置图的数据储存* 邻接矩阵


其它技术问题
