
数据结构
文章平均质量分 85
Sugarzo
SCUT 计科专业在读
努力学习ing
展开
-
数据结构大作业-DBLP科学文献管理系统(一) XML解析,文件哈希,C++线程
在程序中,需要解析的DBLB文件大小为3G-4G的。因此每次启动程序前都读取一遍DBLP并全部写入内存的方法是不现实的,这需要我们提前在磁盘中建立对应的数据库文件,在第一次打开程序时进行建立数据库的操作,将需要的数据写入磁盘。之后对DBLP的数据查询只需要打开已经建立好的数据库进行IO操作即可。由于数据在磁盘和内存中的读取速度差距极大,在磁盘中删改添加数据效率是很低的,因此如何建立对应数据的索引,以及在选择一个在磁盘文件中容易维护的数据结构是非常重要的。在保证查找效率时,......原创 2022-05-14 00:37:59 · 2566 阅读 · 0 评论 -
数据结构大作业-DBLP科学文献管理系统(五)前端Unity设计思想(搜索栏GUI组件应用,状态机,委托,C#线程)
更新终于完结了,对应的前后端源码和可执行程序,unitypackage已放在github上,欢迎大家参考。最后一篇是关于Unity中的程序设计思路。数据结构大作业-DBLP科学文献管理系统-概述 (C++/C#/Unity)_Sugarzo_mei的博客-优快云博客...原创 2022-05-17 02:41:10 · 580 阅读 · 0 评论 -
数据结构大作业-DBLP科学文献管理系统(四) Dll编写,C++与C#的数据交换
终于讲完了后端代码,要涉及到前端的内容了。作为C++写的后台,而在Unity中是用C#中作为脚本语言。因此后台的代码想在前端进行调用,需要讲C++部分打包成Dll的动态链接库,约定好对应的格式,即可在C#中调用。首先需要了解C++/C#之前的主要区别,两种语言在语法上和关键字上很相似。这里体现的最主要的区别C#是托管堆代码,C++是非托管堆代码。在数据分配上C++每当用new等关键字申请空间时,编译器会在堆上为其分配内存,在使用完成后需要delete等回收空间,尤其注...原创 2022-05-14 16:20:16 · 705 阅读 · 0 评论 -
数据结构大作业-DBLP科学文献管理系统(三)聚团分析(并查集,最大团问题)
并查集这部分个人用了C#实现。一开始把题目理解错了,以为完全子图就是一个简单的弱联通图,直到用并查集秒完,等到DLL快交上去才发现原来指的是强连通子图。这里讲一下这里的设计思路。并查集并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题。在探索各个作者间的合作关系中用到了并查集思想。并查集需要实现三个功能:初始化:把每个点所在集合初始化为其自身。在每次使用该数据结构时只需要执行一次,无论何种实现方式,时间复杂度均为...原创 2022-05-14 15:38:33 · 899 阅读 · 0 评论 -
数据结构大作业-DBLP科学文献管理系统(二)作者排序、热点分析功能,模糊搜索(桶排序,字典树)
排序计算将在建库中执行完成,并将结果输出到文件。前端不需要做额外计算。作者统计功能调用作者统计函数后,程序将一个一个将作者名读入,同时维护一个字典树,在每个树的结点记录一个权值,统计该位置对应的作者名出现了多少遍。最后再遍历字典树,获得所有作者的具体出现次数,并由于作者出现频率远小于作者总数量,因此使用桶排序可以获得最好的排序效率,最终在O(n)的时间内完成排序,占用的空间也为O(n)。排序后按顺序输出到文件中。其中,字典树(单词查找树)是一种哈希...原创 2022-05-14 00:54:15 · 1176 阅读 · 0 评论 -
数据结构大作业-DBLP科学文献管理系统-概述 (C++/C#/Unity,github源码)
新开这篇博客,一是为了分享和总结自己的平日所学,督促自己好好学习。二是为了将来面试的时候也有东西可以吹。博主目前南方某985,计科大二在读。第一篇内容就选取上个月刚做完的数据结构大作业分享。选取的题目要求是这样的:科学文献管理系统科研工作者的日常工作离不开查阅科学文献,并对其中的信息进行分析、筛选、挖掘和管理。请你为科研工作者设计一个管理系统,提高科学文献的管理效率。目标用户:科研工作者。 数据配置:请通过以下方法下载数据文件dblp.xml.gz.http://dblp.uni-tri原创 2022-05-13 11:33:44 · 3180 阅读 · 4 评论