- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
沈阳航空航天大学
课 程 设 计 报 告
课程设计名称:数据结构课程设计
课程设计题目:Skip List的设计与实现
院(系):计算机学院
专 业:计算机科学与技术
班 级学 号:2010040101017
姓 名:沈晓峰
指导教师:郑志勇
完成日期:2012年1月11日
目 录
第1章 概要设计 ………………………………………………………………...- 1 -
1.1题目的内容与要求…………………………………………………………...- 1 -
1.2总体结构……………………………………………………………………...- 1 -
第2章 详细设计 - 2 -
2.1菜单选项模块………………………………………………………………...- 2 -
2.2跳表的创建…………………………………………………………………...- 3 -
2.3跳表的查找…………………………………………………………………...- 4 -
2.4跳表的插入…………………………………………………………………...- 5 -
2.5跳表的删除…………………………………………………………………...- 6 -
2.6跳表的输出…………………………………………………………………...- 7 -
第3章 调试分析 - 6 -
第4章 使用说明与执行结果 - 7 -
参考文献 - 9 -
附 录(程序清单) - 10 -
第1章 概要设计
1.1题目的内容与要求
内容:
Skip List 作为有序链表结构的一种扩展,如图所示,其中a是普通的单链表;而b是在此基础上加上第二层(level 2)的额外指针,这些额外的指针指向间隔为2的下个结点,Skip List 因此而得名;类似的c是加上level 3后的Skip List。
Skip List上查找的基本思想是从最高的Level层上查找,找到key所在的范围后,在从较低层次继续重复查找操作,直到Level 1。
要求:
1)设计并实现一个Skip List数据结构并包括、删除、查找等操作;
2)能够对一个Skip List实例实现动态演示。(选作)
1.2总体结构
本程序主要有五个功能:创建跳跃表、跳跃表的插入、跳跃表的删除、跳跃表的输出、跳跃表的查找。
跳跃表的插入和删除:这个是通过先查找所需要的位置,然后插入数,最后用表一级的链表生成一个跳跃表。
跳跃表的查找:这个是通过从三级确定一个大范围,再从二级确定一个小范围,最后在在一级中找到所要查找的数。
跳跃表的创建:这个是先创建一个一级的普通链表,再通过这个一级链表形成一个跳跃表。
跳跃表的输出:这个是通过各个级用链表的方法输出。
图1.1 功能模块图
详细设计
2.1菜单选项模块
控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,流程如图2.1所示。
图2.1 主模块流程图
1)输出主菜单,输入a的值;
2)如果a=1,进行跳表的创建;如果a=2,进行跳表的查找;如果a=3,进行跳表的插入;如果a=4,进行跳表的删除;如果a=5,进行跳表的输出;如果a=0,结束程序。
2.2跳表的创建
输入所需的数值,并以负数结束输入。函数先创建一个普通的一级链表,然后通过跳表的升级,分别将相隔为二的结点升级成二级链表,相隔为三的结点升级成三级链表。算流程如图2.2所示。
图2.2 函数Creat()流程图
注释:
1)创建头结点,并将各个结点连接,创建成一级链表
2)通过update ( )函数,分别将相隔二的,创建为二级链表,相隔为散的创建为三级链表。
3)判断输入的值是否为升序。
3)返回主函数。
2.3跳表的查找
通过从跳表的三级链表确定一个大范围,再从跳表的二级链表确定一个小范围,最后在在一级中找到所要查找的数。如图2.3
图2.3 Search ( )函数流程图
注释:
确定数值在跳表的三级链表的范围。
确定数值在跳表的二级链表的范围。
3)查找该数值在以上范围内是否存在。
4)返回结果。
2.4跳表的插入
通过跳表的查找确定插入数值的地址,再在该位置出入结点,然后再通过跳表的升级,形成一个新的跳表。流程如图2.4所示。
图2.4Insert ( )模块图
注释:
1)通过跳表的查找确定插入数值的地址
2)插入结点。
3)通过跳表的升级,形成一个新的跳表。
4)返回主函数。
2.5跳表的删除
通过跳表的查找确定插入数值的地址,删除该结点,然后再通过跳表的升级,形成一个新的跳表。流程如图2.5所示。
图2.5 Delt ( )模块图
注释:
1)通过跳表的查找确定插入数值的地址
2)删除结点。
3)通过跳表的升级,形成一个新的跳表。
4)返回主函数。
2.6跳表的
文档评论(0)