数据结构中的图 无向和有向,怎样存入文件
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/13 03:24:14
数据结构中的图 无向和有向,怎样存入文件
通常图都分为结点和弧,您存储图到文件可以按照这种方法来实现.
typedef struct {
int type; //标识是有向图还是无向图,例如0表示有向图,非0表示无向图
int vexnum;
char *arclist; //arclist指向一个vexnum*vexnum的矩阵,存储节点间的弧
}CHART;
1. 写文件时将上面的结构写入文件,然后将vexnum*vexnum的弧矩阵写入文件
2. 读文件时先读取上面的结构,然后依据vexnum先申请一个vexnum*vexnum大小的空间
赋值给arclist,然后从文件继续读取vexnum*vexnum大小的数据存储到arclist指向的数
组中.
再问: 那怎么同时记录每条边的权重,再增加一个权重矩阵吗?
再答: arclist指向的这个矩阵每个元素都是一个值,这个值就可以是权重,如果权重比较大,您可以改为整型即可。矩阵的size就是vexnum*vexnum*sizeof(int)依次类推,即使您用double型也没问题啊完全可以描述每条边的权重了。
再问: 你那个矩阵不是邻接矩阵吗?只是记录相邻两个顶点之间是否存在边……有一种方法是可以表示说当两个相邻顶点之间不存在边权重是无穷大的,但这个无法在代码中表示……
再答: 不一定要无穷大吧,例如边的权重一般都是大于0的,您用-1表示不相连即可啊,大于-1的数即表示相连,这个代码肯定可以实现的。
typedef struct {
int type; //标识是有向图还是无向图,例如0表示有向图,非0表示无向图
int vexnum;
char *arclist; //arclist指向一个vexnum*vexnum的矩阵,存储节点间的弧
}CHART;
1. 写文件时将上面的结构写入文件,然后将vexnum*vexnum的弧矩阵写入文件
2. 读文件时先读取上面的结构,然后依据vexnum先申请一个vexnum*vexnum大小的空间
赋值给arclist,然后从文件继续读取vexnum*vexnum大小的数据存储到arclist指向的数
组中.
再问: 那怎么同时记录每条边的权重,再增加一个权重矩阵吗?
再答: arclist指向的这个矩阵每个元素都是一个值,这个值就可以是权重,如果权重比较大,您可以改为整型即可。矩阵的size就是vexnum*vexnum*sizeof(int)依次类推,即使您用double型也没问题啊完全可以描述每条边的权重了。
再问: 你那个矩阵不是邻接矩阵吗?只是记录相邻两个顶点之间是否存在边……有一种方法是可以表示说当两个相邻顶点之间不存在边权重是无穷大的,但这个无法在代码中表示……
再答: 不一定要无穷大吧,例如边的权重一般都是大于0的,您用-1表示不相连即可啊,大于-1的数即表示相连,这个代码肯定可以实现的。
求数据结构算法,已知有m个顶点的无向图,采用邻接矩阵结构储存,写出下列算法
一道关于有向图的数据结构算法填空题,
数据结构题.假定无向图G有6个结点和9条边,.(1) 画出G的邻接距阵和邻接表(2) 根据邻接表从顶点3
无向图,算法求思路有一个无向图,给定图中的起点和终点,从起点出发,将图中的所有点都走一遍,并从终点出来,要求走的路径最短
数据结构:n个顶点无向图 用邻接矩阵表示 图中有多少条边~怎么判别~很苦恼~
数据结构题.有向图,给出该图的一种拓扑排序序列
数据结构用什么方法来判断有向图是否存在回路
大专考试数据结构题一、单项选择题(每题5分,共30分)1. 以下说法正确的是( )。A.连能分量是无向图中的极小连通子
求数据结构c语言描述求无向网的最小生成树的代价.
C语言数据结构 克鲁斯卡尔算法求无向网的最小生成树.
加权无向图是什么
是数据结构试题、一直一个无向图的顶点集为{a b c d e} 由邻接矩阵画出该图的图形