ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:4.63MB ,
资源ID:1096333      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-1096333.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(跳跃链表的设计与实现-数据结构与算法综合设计报告书.docx)为本站会员(龙***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

跳跃链表的设计与实现-数据结构与算法综合设计报告书.docx

1、数据结构与算法课程设计说明书题 目: 跳跃表的实现与应用 学 院: 计算机与信息安全学院 专 业: 姓 名: 学 号: 指导教师: 2017 年 3 月 15 日成绩评定标准及成绩1、 能按照格式进行写作,无抄袭现象(10 分) 2、 报告内容行文通畅,有条理性,无错别字,结构严谨。(10分) 3、 能够按照数据结构课设的格式要求、排版要求和字数要求等,有需求分析,系统分析,详细设计,关键技术的介绍和参考文献。(10 分) 4、 在验收过程中,能合理的回答问题(20 分) 5、 软件能正常运行,实现所提出的功能(40 分) 6、 软件代码规范性较好(5 分) 7、 具有自己的创新或特色(5 分

2、) 总成绩: 摘 要本次课程设计的内容是跳跃链表,跳跃链表是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树。本篇文档共由七大部分构成,分别是前言、需求分析、设计思想与流程、软件运行演示,问题与解决、结语和参考文献。本系统共实现了跳跃链表地创建,插入,删除,查找,输出等基本功能,还实现了性能测试并将测试数据输出到文件。在界面制作上使用 C 语言+GTK 图形化库制作,并加入了后期界面优化,使其具有了更好的用户体验。关键词:界面,GTK,跳表,简约风格目 录1.前言 .12.需求分析 .12.1 软件功能需求分析 .12.2 软 件 判 错 、 抗 压 及 优 化 需 求 分 析 .

3、22.3 软件开发环境需求分析 .22.3.1 系统环境 .22.3.2 编程语言 .22.3.3 附加库需求 .22.4 软件运行环境需求分析 .33.设计思想与实现 .33.1 软件系统全局分析 .33.2 软件流程图 .33.3 程序功能流程图 .43.3 核心代码分析 .51、界面 .52、数据处理 .63.4创新思想 .114.软件运行测试与界面展示 .125.问题与解决 .145.1 界面更新问题 .145.2 输出操作难点 .156. 结语 .157. 参考文献 .1511.前 言在确定了本次课设的题目后,在本着提高专业技能,巩固基础知识的前提下,通过查阅资料,最终选择了使用 C

4、 语言+GTK 图形化界面库来完成本次课设,在确定了之后,便去图书馆找了相关书籍,在简单了解了面向对象的思想之后,将本次程序设计分为了四部分:全局界面布局及核心思想分析,代码实现,程序调试及优化,课程设计报告书书写。在界面布局上,使用菜单栏,功能之间相互切换,每个功能有相应的界面的布局方式,界面使用简约风格设计,在算法刷新界面上有所创新,使用全局变量保存界面相应构件的指针数据,动态刷新界面。然后开始书写代码,由于首次接触 GTK 及面向对象的思想,在书写代码时遇到了 N 多问题,但在查阅相关书籍和网上搜索的帮助下,写出了较为满意的界面,然而在跳跃链表地核心算法上相比较界面花的时间却较少,但相应

5、的功能是比较全面的,性能测试的大数据测试并输出文件,还有各种数据检查,弹窗警告,高效算法等无一不是程序亮点。在完成了基本功能之后,进入后期优化,通过网上学习,对界面加入了背景图片,并仔细调试试用了多种界面风格之后,选用灰色磨砂背景,高亮显示数据提示等,使得界面进一步优化,提高了用户体验。对代码进行了添加注释,多次使用的代码段封装函数等操作。因为本次课设开发环境为 linux,且在运行时需要 GTK 库支持,所以在查阅网上资料后,对程序进行了软件封装打包,使得其可在 windows 下安装并运行。2.需 求 分 析2.1 软 件 功 能 需 求 分 析问题描述:链表存在的一个缺陷是:在有序链表中

6、查找一个元素是否存在,需要从头开始,依 次顺序查找。跳跃链表是有序链表的一个变种,可以进行非顺序查找。 该题目要求实现一个跳 跃链表,并对其与一般链表进行比较测试。 基本要求:(1)设计实现跳跃链表,用于高效地访问链表中的元素。 (2)包括的基本操作:建立、查找、插入、删除等操作。 (3)将其效率和链表、有序链表的效率进行比较。 (4)输入:数据是随机产生;非随机产生两种情况 更高要求(5)将跳跃链表的操作封装为 DLL。 (6)UI 设计与实现。据题目要求,本次课设有如下基本功能:随机创建,按值创建,查找,插入,按值删除,按序删除,性能测试,全层输出,定层输出。在性能测试上使用大数据测试并将

7、测试结果输出到文件。22.2 软 件 判 错 、 抗 压 及 优 化 需 求 分 析作为一款交互界面软件,软件的判错能力是评判一款软件成功与否的重要标志,本软件使用全程输入数据分析,弹窗错误警告的判错处理机制,在不影响用户操作体验的前提下,尽可能的提高操作的灵活性及准确性,使得用户在输入错误数据的情况下,软件大概率不会奔溃,判错率高达 90%。在软件抗压方面,因为界面输出方面的限制,数据量在演示的情况下,正常输出最高可达 16 链表数据。在性能测试抗压方面,使用大数据测试,创建速度略显缓慢,但其他功能操作体验良好,数据输出正常,速度明显快于普通有序链表。在界面优化上,使用简约风格创作,并加入灰

8、色磨砂背景图片,高亮显示操作提示,操作成功或失败有相应颜色显示,一目了然,后期美化弹窗警告,并加入系统提示音。使得用户体验得到进一步提升。2.3 软 件 开 发 环 境 需 求 分 析2.3.1 系 统 环 境本次课程设计软件开发全程使用 Deban 的 kali Rolling 系统创作,选择此系统的原因有以下几点,一是因为在 windows 和 linux 上搭建 GTK 环境,linux 更为容易,而且开源的 linux 环境操作更为灵活,二是在 windows 下操作的界面优化无法和 linux 媲美。第三点是因为 linux 系统在电脑上的配置完善,想进一步熟悉 linux 下的编程

9、操作,gdb 调试, vim 操作等技术。综上所述,最终选择 linux 作为本次课设的操作系统。2.3.2 编 程 语 言本次软件设计语言使用 C 语言编程,在其他语言不够熟悉的情况下,使用 C 语言减少了课设的复杂度,并且使用了 C 语言之后,与所选 GTK 库完美兼容,使得学习和使用 GTK 事半功倍。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点,C 语言应用范围广泛,具备很强的数据处理能力,它具有简洁紧凑、灵活方便、运算符丰富、数据类型丰富等优点。C 语言有一个突出的优点就是适合于多种操作系统,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件。

10、综上,本次课程软件设计使用 C 语言编写。2.3.3 附 加 库 需 求由于课程软件设计对于 UI 界面的要求,本次课程设计选择使用 C 语言下的图形化界面库 GTK进行创作,选择 GTK 库有以下原因, GTK 库是使用 C 语言写的,与 C 语言不会有任何兼容性的问题,它简单易用,对开发人员和用户来说都是这样而且它设计良好、灵活而可扩展,是一款自由软件而且有一个自由的开放源码许可,并且它和 C 语言一样是可移植的,诸多原因就选择了它。3GTK(GIMP Toolkit)是一套跨多种平台的图形工具包。虽然最初是为 GIMP 写的,但早已发展为一个功能强大、设计灵活的通用图形库,在被 GNOM

11、E 选中之后使得 GTK+广为流传,成为 Linux 下开发图形界面的应用程序的主流开发工具之一。2.4 软 件 运 行 环 境 需 求 分 析需求选项 要求CPU Intel Core i3 及以上处理器或具有相同性能其他厂家的 cpu内存 推荐 2 G 或以上硬盘空间 至少 50 M 空间操作系统 Windows2000 以上或 linux 系统均可附加库 GTK 图形化界面库其他 无 表 2-13.设 计 思 想 与 实 现3.1 软 件 系 统 全 局 分 析本次软件全局使用一个功能包含一模板一处理函数的构思方式,在数据处理上多次使用全局变量,如全局变量保存 Top 头指针,指针数组全

12、局变量动态刷新界面,全局变量标志 flag 等。在界面代码中的回调函数操作数据,又在数据函数中动态的在界面上显示结果。使用.h 文件封装了结构体指针数组和散列表结构体。在界面刷新上使用全局变量保存数组指针,动态的隐藏取消映射构件,使得在刷新上有了很大的机动性,可以避免将菜单刷走,使得动态更新页面简单高效。在数据处理方面,全局使用 Top 指针保存头指针。3.2 软 件 流 程 图NULL开始主界面初始化Top随机创建 按值创建4图 3-1 哦哦哦、3.3 程 序 功 能 流 程 图数据界面输出错误正确Top 各界面操作结束随机创建产生随机数据个数创建主函数Top按值创建用户输入删除插入查找输出

13、用户输入数据相应处理函数判断输入输入Mai gtk_main();警告53.3 核 心 代 码 分 析1、 界 面A基本构建语句GtkWidget *main_window;/窗体GtkWidget *MenuBar;/菜单条GtkWidget *box;/定义组合框GtkWidget *Menu;/*定义子菜单*/GtkWidget *toolbar;/*定义工具条*/GtkWidget *image;/*定义图片构件*/gtk_box_pack_start(GTK_BOX(box),MenuBar,FALSE,FALSE,2);/菜单条加入vboxgtk_container_add(GTK

14、_CONTAINER(main_window),box);gtk_widget_show_all(main_window);所有的界面构建使用标签,组合框,文本框,下拉式菜单构成,在外面附加弹窗警告函数,使得整体功能全面,图片构件的使用加入了背景图片。B 一般性模板函数GtkWidget *moudle_lable(GtkWidget *widget,char *text,int i)/标签/输入参数:标签加入的构建,标签显示的内容GtkWidget *label1 = gtk_label_new(text);wm-componentwm-com_num+=label1;gtk_box_pac

15、k_start(GTK_BOX(widget),label1,FALSE,FALSE,5);if(i=1)gtk_widget_show(label1);return label1;这是标签的一般性模板函数,输入参数为:GtkWidget *widget:需要加入的父构件指针char *text:标签内容int i:是否现在就显示标签(0为否,1为是)返回值为此lable标签的指针。此函数的作用是简化代码量,使得重复的代码封装调用,提高效率,由于按钮,组合框等参数过于杂乱,无法构造出一般性模板函数,且其使用量没有标签庞大,所以对程序简化帮助不大,故只构造标签的模板函数C弹窗警告函数void f

16、ailed_p(char *text)/数据错误弹窗6/输入:char *text:所显示的弹窗警告信息GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW (wm-component1),GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,text);gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);/设置窗口的位置 gtk_dialog_run (GTK_DIALOG (dialog);/运行上面创

17、建的窗口 gtk_widget_destroy (dialog);/释放窗口的界面内存 此函数使用弹窗的方式告知相应的警告,重复利用率高。D初始化窗口函数Void initialise()/初始化窗口int i=2;for(;icom_num;i+)gtk_widget_hide(wm-componenti);gtk_widget_destroyed(wm-componenti,NULL);wm-com_num=2;此函数作用为将除菜单、组合框、主窗口以外的所有组件取消映射并撤销,是界面代码的核心,动态刷新2、 数 据 处 理A升级版随机数生成器void Stoch_plus(int n,int num,int* num_list,int *n_list)int i,j=0,w;Phashtable phd;phd=create_empty(n,n_list);for(i=0;im;i+)/获取随机数if(phd-elementi.key!=0j+;free(phd);参数介绍:

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。