收藏 分享(赏)

一步一步写算法(之图的保存).doc

上传人:fmgc7290 文档编号:7581543 上传时间:2019-05-21 格式:DOC 页数:3 大小:40.50KB
下载 相关 举报
一步一步写算法(之图的保存).doc_第1页
第1页 / 共3页
一步一步写算法(之图的保存).doc_第2页
第2页 / 共3页
一步一步写算法(之图的保存).doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、 软件英才网 软件行业驰名招聘网站有需要请联系我们一步一步写算法(之图的保存) 前面的几篇博客,我们对图进行基本定义,同时介绍了图的创建、图的添加和删除等。今天,我们聊一聊图是怎么在存储在外设中的。这些外接设备可以是各种类型的,比如说,可以是硬盘、sd 卡、网络硬盘等等。本质上说,我们今天讨论的主题就是怎么把图的数据永久地保留在本地。并且,如果需要加载这些数据,也可以快速恢复图原来的面貌。对图数据结构已经记得不太清楚的朋友可以复习一下面的代码,回想一下我们之前的定义方法。cpp view plaincopy typedef struct _LINE int end; int weight; s

2、truct _LINE* next; LINE; typedef struct _VECTEX int start; int number; LINE* neighbor; struct _VECTEX* next; VECTEX; typedef struct _GRAPH int count; VECTEX* head; GRAPH; 数据结构中有好多的指针。那么在外存中应该怎么保存呢?因为对于外存来说,指针是没有什么意义的。大家稍微思考其实就明白了。其实我们可以把这些指针全部看成是偏移值。GRAPH 是有许多的点构成的,点的结构中有很多的边连接,那么我们就可以按照下面的顺序保存数据。 c

3、pp view plaincopy /* * - * | GRAPH | vectex1 | vectex2 | | vectex n | LINE1 | LINE n | * - */ 软件英才网 软件行业驰名招聘网站有需要请联系我们那么偏移值怎么安排呢? a)GRAPH 结构head 为第一个 vectex 的偏移地址。b)VECTEX 结构neighbour 记录了第一条边的偏移位置,next 记录了下一个节点的偏移值。c)LINE 结构next 为下一条边的偏移值。但是,如果我们做一些优化的话,那么保存的数据还要少一些。比如说,第一个vectex 的节点就在 GRAPH 的后面,那么

4、head 实际上不需要保存;同时在 vectex 结构中,因为我们需要知道 LINE 的偏移值,所以 neighbour 的偏移是需要知道的,但是 next 就不再需要了,因为 vectex 数据本身就是并列在一起的;最后同样因为我们需要把所有属于同一个 vectex 的边放在一起,那么 LINE 结构中的 next 数据其实也可以省略了。所以修改后保存的数据结构大体应该是这样的:cpp view plaincopy typedef struct _LINE int end; int weight; LINE; typedef struct _VECTEX int start; int number; LINE* neighbor; VECTEX; typedef struct _GRAPH int count; 软件英才网 软件行业驰名招聘网站有需要请联系我们 GRAPH; 有了上面的数据结构,那么从外层加载数据就是一个逆向操作而已,不再复杂了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报