作业帮 > 综合 > 作业

数据结构中的图 无向和有向,怎样存入文件

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/05 15:27:18
数据结构中的图 无向和有向,怎样存入文件
数据结构中的图 无向和有向,怎样存入文件
通常图都分为结点和弧,您存储图到文件可以按照这种方法来实现.
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的数即表示相连,这个代码肯定可以实现的。