Skip-List的设计与实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

网游加速器 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档