数据结构课程设计报告(模版)范文
数据结构课程设计报告模板参考

XX学院数据结构课程设计(论文)题目:散列表的设计与实现学生XX:X攀学号:4所在院(系):数学与计算机学院专业:网络工程班级:二班指导教师:蒋斌职称:副教授2017年6 月28 日XX学院教务处制附件2:XX学院本科学生课程设计任务书注:任务书由指导教师填写。
附件3:摘要信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。
计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。
散列表的设计与实现所涉及到的操作算法都是以链表或顺序表的基本运算作为基础的,此程序通过通讯录实现,包括建立通讯录,添加记录,查询记录,删除记录,显示记录,修改记录。
通过顺序表存储结构实现数据的输入,实现各子程序过程的演示,对异常输入信息报错。
关键字:新建通讯录,散列表,散列函数,处理冲突目录摘要V 1课程设计的目的和意义 1 2需求分析 22.1需求概述 22.2需求环境 22.3功能描述 2 3整体设计(方案设计) 33.1系统功能设计 33.2处理功能设计 33.3主要模块 53.4算法模块设计 53.4.1哈希算法 53.5二次探测再散列 6 4程序结构及源代码说明 64.1程序结构说明 64.1.1哈希函数 64.1.2冲突处理函数74.2程序源码及说明8 5程序测试及运行结果说明1 65.1主菜单运行界面1 65.2各项功能测试1 65.2.1用户信息录入1 65.2.2冲突解决175.2.3用户查找17 总结18 参考文献201 课程设计的目的和意义《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。
数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
数据结构课程设计实验报告完整版

数据结构课程设计实验报告完整版【正文】一、实验目的本实验主要目的是通过实践,掌握数据结构的基本概念、常见数据结构的实现方式以及在实际应用中的应用场景和效果。
二、实验背景数据结构是计算机科学与技术领域中的一个重要概念,是研究数据的组织方式、存储方式、访问方式以及操作等方面的方法论。
在计算机科学领域,数据结构是实现算法和解决问题的基础,因此对数据结构的理解和应用具有重要意义。
三、实验内容本次数据结构课程设计实验主要分为以下几个部分:1. 实验环境的准备:包括选择合适的开发平台、安装必要的软件和工具。
2. 实验数据的收集和处理:通过合适的方式收集实验所需的数据,并对数据进行处理和整理。
3. 数据结构的选择和实现:根据实验需求,选择合适的数据结构,并进行相应的数据结构实现。
4. 数据结构的测试和优化:对所实现的数据结构进行测试,包括性能测试和功能测试,并根据测试结果对数据结构进行优化和改进。
5. 实验报告的撰写:根据实验过程和结果,撰写完整的实验报告,包括实验目的、实验背景、实验内容、实验结果和结论等。
四、实验过程1. 实验环境的准备本实验选择了Visual Studio作为开发平台,安装了相应版本的Visual Studio,并根据官方指引进行了相应的配置和设置。
2. 实验数据的收集和处理本实验选取了一份包含学生信息的数据集,包括学生姓名、学号、性别、年龄等信息。
通过编写Python脚本,成功提取了所需信息,并对数据进行了清洗和整理。
3. 数据结构的选择和实现根据实验需求,我们选择了链表作为数据结构的实现方式。
链表是一种常见的动态数据结构,能够高效地插入和删除元素,适用于频繁插入和删除的场景。
在实现链表时,我们定义了一个节点结构,包含数据域和指针域。
通过指针的方式将节点连接起来,形成一个链式结构。
同时,我们还实现了相关的操作函数,包括插入、删除、查找等操作。
4. 数据结构的测试和优化在完成链表的实现后,我们对其进行了性能测试和功能测试。
数据结构课程设计报告 格式

数据结构课程设计报告 -------个人信息管理系统软件学院软件专业2011级7班任课教师: 孔兰菊实验教师: 姚光开目录一、系统开发平台 (1)二、问题描述 ............................................. 错误!未定义书签。
2.1 任务陈述 (1)2.2 任务目标.......................................... 错误!未定义书签。
三、系统定义 (1)3.1 系统边界.......................................... 错误!未定义书签。
3.2 用户视图.......................................... 错误!未定义书签。
四、需求分析 (2)4.1 用户需求说明 (2)4.1.1 数据需求 (2)4.1.2 事务需求 (2)4.2 系统需求说明 (2)五、数据库逻辑设计 (3)5.1 ER图 (3)5.2 数据字典 (3)5.3 关系表............................................ 错误!未定义书签。
六、数据库物理设计 (3)6.1 索引.............................................. 错误!未定义书签。
6.2 视图.............................................. 错误!未定义书签。
6.3 安全机制.......................................... 错误!未定义书签。
6.4 其他.............................................. 错误!未定义书签。
七、应用程序设计 (3)7.1 功能模块 (3)7.2 界面设计 (3)7.3 事务设计.......................................... 错误!未定义书签。
数据结构课程设计报告样板

《数据结构》课程设计报告题目:班级:学号:姓名:xxxx年xx月xx日一、总体设计目标设计<<在这一节中,陈述设计所要实现的目标,包括设计题目、要实现的基本功能、要达到的指标要求。
在开始一个设计之前,应当首先对所要编写的程序将是什么样的、应当如何使用、可以达到什么效果有一个预期的设想。
只有对要做的事情有一个清楚的认识,对自己努力的目标有一个清楚的认识,所做的努力才是有意义的。
>>框架设计<<在这一节中,描述程序的设计框架,包括程序的结构描述、模块间的关系描述。
在开始动手写程序之前,先想好程序的组织结构,再逐块进行设计和编码。
好的程序框架,不仅可以使程序的思路更清晰,也可以使设计工作更有条理、编码更简洁、更易于理解和维护。
>>二、详细设计数据结构设计<<在这一节中,描述程序中所用到的主要数据结构,包括结构描述、结构的设计思路,即为什么采用这样的数据结构。
程序的数据结构是整个程序的核心所在,设计良好的数据结构,不仅可以准确地表达程序所要处理的数据对象,而且可以更有效地实现对数据的相关处理。
>>主要技术点及具体实现<<在这一节中,描述系统中所涉及到的主要的技术点,包括要解决的问题、所采用的解决方案和具体实现方法。
在一个设计中往往会可能存在一些有一定难度的要解决的问题,需要寻找和设计适当的方法,这些问题的解决通常是一个设计中的闪光点,也是设计者最有成就感的地方,把这些问题以及自己的解决方案写出来,最能够反映设计者工作中的与众不同之处和创造性。
>>三、测试测试计划<<在这一节中,描述如何对系统进行测试,包括测试方案的设计、测试数据的设计。
测试工作是程序设计中极为重要的一个环节,只有通过严格的测试,才能发现程序中可能隐藏的问题和错误,保证程序的正确和健壮。
制订测试计划和设计测试数据时,要考虑到测试的全面性和针对性。
数据结构课程设计报告

*****数据结构课程设计题目: 赫夫曼树的建立运动会分数统计订票系统猴子选大王图的建立与输出姓名:***学号 ****专业:计算机科学与技术指导教师:****2006年9月20日目录一:绪言 (3)1.1课题设计背景 (3)1.2课题研究的目的和意义…………………………….3.1.3课题研究的内容 (4)二:主菜单设计 (4)2.1主菜单 (4)2.2主菜单源代码 (4)2.3主菜单流程图 (5)三:具体程序设计 (6)3.1赫夫曼树的建立 (6)3.2运动会设计 (8)3.3订票系统 (12)3.4猴子选大王 (15)3.5图的建立及输出 (16)四:总结与展望 (19)五:参考文献 (19).1.绪言1.1 课题背景《数据结构》作为一门独立的课程最早是美国的一些大学开设的,1968年美国唐·欧·克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。
从60年代末到70年代初,出现了大型程序,软件也相对独立,结构程序设计成为程序设计方法学的主要内容,人们就越来越重视数据结构,认为程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。
从70年代中期到80年代初,各种版本的数据结构著作就相继出现。
目前在我国,《数据结构》也已经不仅仅是计算机专业的教学计划中的核心课程之一,而且是其它非计算机专业的主要选修课程之一。
《数据结构》在计算机科学中是一门综合性的专业基础课。
数据结构的研究不仅涉及到计算机硬件(特别是编码理论、存储装置和存取方法等)的研究范围,而且和计算机软件的研究有着更密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。
在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方便。
因此,可以认为数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程,在计算机科学中,数据结构不仅是一般程序设计(特别是非数值计算的程序设计)的基础,而且是设计和实现编译程序、操作系统、数据系统及其它系统程序和大型应用程序的重要基础。
数据结构课程设计报告

数据结构课程设计报告标题:数据结构课程设计报告摘要:本报告旨在详细描述数据结构课程设计的过程和结果。
通过对数据结构的学习和实践,我们掌握了基本的数据结构知识,并运用所学知识完成了一个实际的项目。
本报告将介绍项目的背景、需求分析、设计思路、实现过程和测试结果,并对项目的优缺点进行评估和总结。
1. 引言在现代计算机科学领域,数据结构是一门基础而重要的课程。
它研究数据的组织、存储和管理方式,对于提高程序效率和解决实际问题具有重要意义。
本课程设计旨在通过实践,加深对数据结构的理解并掌握其应用。
2. 背景在本次课程设计中,我们选择了一个实际的问题作为研究对象,即一个学生信息管理系统。
该系统需要能够对学生的基本信息进行存储、查询和修改,并提供相应的功能操作。
3. 需求分析在需求分析阶段,我们对学生信息管理系统的功能和性能需求进行了详细的调研和分析。
通过与用户的交流和讨论,我们确定了以下需求:- 学生信息的录入和存储:包括学生姓名、学号、性别、年龄等基本信息;- 学生信息的查询和展示:支持按照学号、姓名等条件进行查询,并能够将查询结果以表格形式展示;- 学生信息的修改和删除:允许用户对已录入的学生信息进行修改和删除操作;- 数据的持久化存储:保证学生信息的长期保存,并能够在系统重启后恢复数据。
4. 设计思路基于需求分析的结果,我们设计了以下数据结构和算法:- 学生信息的存储:采用链表数据结构,每个节点表示一个学生的信息,包括学号、姓名、性别、年龄等字段;- 查询功能的实现:通过遍历链表,按照用户指定的条件进行匹配,返回满足条件的学生信息;- 修改和删除功能的实现:通过遍历链表,找到目标学生节点,进行相应的修改或删除操作;- 数据持久化存储:将学生信息保存在文件中,实现数据的长期保存和恢复。
5. 实现过程在实现阶段,我们使用C++编程语言,利用所学的数据结构知识逐步完成了学生信息管理系统的开发。
具体步骤如下:- 定义学生信息的数据结构:创建一个包含学号、姓名、性别、年龄等字段的结构体;- 实现学生信息的录入和存储功能:通过链表数据结构,将学生信息存储在内存中;- 实现学生信息的查询和展示功能:按照用户指定的条件遍历链表,返回满足条件的学生信息;- 实现学生信息的修改和删除功能:通过遍历链表,找到目标学生节点,进行相应的修改或删除操作;- 实现数据的持久化存储功能:将学生信息保存在文件中,实现数据的长期保存和恢复;- 进行系统测试和调试:通过输入不同的测试数据,验证系统的功能和性能。
杭电_数据结构课程设计报告模板(内附C代码)
.专业整理 .数据结构课程设计报告学院专业:软件工程班级:学号:学生姓名:指导老师:彭伟民日期:2016.01.01.专业整理 .目录1猴子吃桃子问题 (4)1.1需求分析 (4)1.2程序设计思想 (4)1.3程序源代码 (4)1.4程序运行结果 (8)2进制数转化问题 (9)2.1需求分析 (9)2.2程序设计思想 (9)2.3程序源代码 (10)2.4程序运行结果 (13)3长整数运算 (13)3.1需求分析 (13)3.2程序设计思想 (13)3.3程序源代码 (14)3.4程序运行结果 (22)4学生成绩管理系统 (22)4.1需求分析 (22)4.2程序设计思想 (23)4.3程序源代码 (24).专业整理 .4.4程序运行结果 (36)5哈夫曼编码应用 (38)5.1需求分析 (38)5.2程序设计思想 (39)5.3程序源代码 (39)5.4程序运行结果 (42)6学校超市选址问题 (44)6.1需求分析 (44)6.2程序设计思想 (44)6.3程序源代码 (44)6.4程序运行结果 (51)7学生成绩管理系统 (52)7.1需求分析 (52)7.2程序设计思想 (52)7.3程序源代码 (52)7.4程序运行结果 (63)8排序综合 (65)8.1需求分析 (65)8.2程序设计思想 (66)8.3程序源代码 (67)8.4程序运行结果 (82)9课程设计总结 (84).专业整理 .1猴子吃桃子问题1.1 需求分析有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第 10 天就只余下一个桃子。
用多种方法实现求出原来这群猴子共摘了多少个桃子。
1.2 程序设计思想已知第十天只余下 1 个桃子,第一天开始每天都吃当前桃子一半再多一个,那么就只需要从第十天开始倒推即可,用链表、数组、递推、常规方法都可以采用这种思路实现计算第一天桃子数量。
1.3 程序源代码#include<iostream>using namespace std;//有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第 10 天就只余下一个桃子。
数据结构分析报告(5篇)
数据结构分析报告(5篇)第一篇:数据结构分析报告银行自动取款系统一、目的根据所学知识,编写指定题目的C语言程序,并规范地完成课程设计报告。
通过课程设计,加深对《C语言程序设计》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用(时间函数、绘图函数以及文件的读写操作函数等);复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。
二需求分析根据任务书里的“课程设计的基本要求”及给定的“课程设计的主要内容”。
编写的银行自动提款模拟系统由使用者担当银行卡使用者自行输入卡号模拟银行卡使用系统进行各项操作,该系统有简便、稳定等特点。
该系统开始时有使用者自行初始化各项数据,包括卡的数量,一天内可操作次数上相及“银行卡”的卡号和余额,使用者可根据不同情况对系统的各项内容进行初始化,方便、快捷。
当使用者输入错误数据及操作次数达到上限时系统会自动退出或者给出相应的恢复提示使用者重新操作,直到输入正确,系统不会出现异常、突然崩溃,稳定。
1、所实现的功能:①.系统能够让使用者自行输入卡的数量及每天操作次数上限,然后初始化卡的卡号和卡上所拥有的余额;②.初始化信息后,可以开始使用系统进行存取款,输入卡号,如果卡号为负责退出程序、卡号不存在则提示重新输入直到输入正确为止,如果此卡的操作次数已达上限则同样退出程序;③.输入正确后可以输入想要存取款数目,当数目为正是存款,负数为取款;④.正确存取款后,系统会自行输出操作、卡上余额和剩下操作次数到屏幕,然后返回选择菜单,使用者可以再进行选择进行操作。
2、测试预测①.进行测试,每个编写的函数逐个进行调试直到都能够正常运行;②.在进行存取款操作都,所对应卡的操作次数应加一,余额能够进行相应的改变;③.程序的各项运作结果与预想的与一样。
数据结构课程设计报告模板
否[贪吃蛇程序设计]一、设计课题贪吃蛇程序设计二、设计容1. 工作说明(1)实现贪吃蛇小游戏的运行,各功能模块分别为食物类型的定义,蛇类型的定义,界面光标位置的显示,蛇的初始化,计分方向控制的显示,边界及界面的显示,食物的输出,控制蛇的死亡,游戏的实现过程等等。
以字符形式输入数据,控制程序的运行,通过ASCII码的转换输出边界、食物、(3) 所用到的数据结构的知识及相关数据结构的描述形式数据类型的表示及实现,算法和算法分析,线性表的链式表示和实现,数组的顺序表示,动态存储管理等。
(4)函数介绍a界面光标位置函数:控制界面光标位置,为显示边界、食物等界面显示容提供依据。
b.方向控制函数:通过键盘输入指定字母实现对蛇移动方向的控制。
c.初始化蛇函数:通过链表方式显示蛇的形象,并控制蛇的初始长度、初始移动方向及初始分数。
d.边界及界面显示函数:通过引用界面光标位置函数,实现在指定位置输出上下左右边界,显示操作方法。
e.计分显示函数:通过引用界面光标位置函数,实现在指定界面位置输出分数。
f.控制蛇的死亡函数:讨论当蛇碰到左右上下边界以及咬到自身等几种情况时,通过引用库函数清除当前屏幕,再通过界面光标位置函数在指定位置输出"Game Over!"、"Press ESC to exit,any other key to retry!",接着通过选择是否继续游戏,如果是,通过引用库函数中的跳跃函数,回到指定位置循环程序;如果否,则结束游戏。
g.食物输出函数:通过引用库函数中的随机数函数随机输出食物,并当蛇吃到食物时,控制蛇长度增长,同时使用递归函数循环输出食物。
h.游戏实现过程函数:调用以上函数,实现蛇的移动、增长、死亡的具体游戏实现过程。
(5) 函数的调用关系(1)调用了gotoxy()函数的有:boundary()函数,getscoresys()函数,isdead()函数,play()函数。
数据结构课程设计报告参考模板
山东理工大学计算机学院课程设计(数据结构)班级姓名学号指导教师二○一一年一月二十日课程设计任务书及成绩评定课题名称Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。
(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。
(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。
2、设计题目要求:(给出你所选择的题目的要求描述)Ⅱ、设计进度及完成情况日期内容1.10-1.11 选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。
1.12~1.14 创建相关数据结构,录入源程序。
1.17~1.19 调试程序并记录调试中的问题,初步完成课程设计报告。
1.20~1.21 上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。
考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。
Ⅲ、主要参考文献及资料[1] 严蔚敏数据结构(C语言版)清华大学出版社 1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999[3] 谭浩强 C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一一年一月二十一日目录第一章概述 (1)第二章系统分析 (2)第三章概要设计………………………………………………………第四章详细设计………………………………………………………第五章运行与测试……………………………………………………第六章总结与心得……………………………………………………参考文献………………………………………………………………第一章概述(以图书管理系统设计为例)课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
攀枝花学院学生课程设计(论文)题目:*************学生姓名:********学号:**所在院(系):数学与计算机学院专业:计算机科学与技术专业班级:2011级计算机科学与技术1班指导教师:蒋斌职称:讲师2013年12月19 日攀枝花学院本科学生课程设计任务书注:任务书由指导教数据结构课程设计评定表I摘要本次课程设计是利用数据结构的知识编写一个能够实现学生配对的问题的软件,以达到在每一首歌曲中能够有学生配对来进行舞蹈表演。
为了实现这一个功能我们用利用已学的知识进行编写程序。
通过学习数据结构课程和c语言的知识,主要利用数据结构的队列和C语言知识来实现软件的功能。
主要是把男女生分别放在两个队列中,要涉及到队列的判断和循环等算法。
判断队列的满和空的知识来完成。
关键字:学生搭配问题,数据结构,队列,C语言,软件,功能I I目录摘要 (II)1.方案设计 (1)1.1问题描述 (1)1.2需求分析 (1)1.3运行环境 (1)1.4概要设计 (2)2.算法设计 (3)2.1算法设计思想 (3)2.2算法设计的对应方式 (3)2.3算法设计流程图 (4)3.详细设计 (5)3.1设计思想 (5)3.2设计关键算法 (5)4.调试分析 (7)4.1、测试及结果 (7)5.总结 (9)参考文献 (10)程序清单 (11)数据结构课程设计方案设计1.方案设计1.1问题描述一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴.请设计一系统模拟动态地显示出上述过程,要求如下:1) 输出每曲配对情况2) 计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况.至少求出K的两个值。
1.2需求分析核心问题:循环队列的应用数据模型(逻辑结构):循环队列(两个),将男生、女生两组人分别存放,以后实现循环配对输出。
存储结构:循环链表核心算法:循环队列的入队,出队,判队满,判队空。
输入数据:男生人数、女生人数,歌曲数量输出数据:每一首歌曲播放时,男生和女生搭配情况(输出编号)当要查找的男女搭配时输出歌曲编号,和他们搭配的总次数。
通过以上分析,该程序具有可行性。
1.3运行环境硬件开发环境:PC机软件开发环境:VC++ 6.0操作系统环境Window XP11.4概要设计整个设计的流程图图1.12数据结构课程设计算法设计2.算法设计2.1算法设计思想队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。
循环队列是在队列的顺序存储结构中,除了用乙组地址连续的存储单元依次存放从队列头到队列尾的元素外,尚需附设两个指针front和rear分别指示队列头元素和队列尾元素的位置。
循环队列(两个),将男生、女生两组人分别存放,以实现循环配对输出。
循环队列的入队,出队,判队满,判队空。
(1)要模拟动态地显示出现题目中所要求的循环,我们要先建立两个循环队列SqQueue 和SqQueue2。
(2)将男生、女生两组人分别存入这两个队列。
以实现他们的循环配对输出,这是循环队列固有的特性。
(3)利用循环队列的特性,将男女生分别进行入队列和出队列操作,且实现搭配输出。
(4)循环队列的长度分别设为男女生的个数即可。
(5)在计算机终端输出的结果是:根据要求输出男生女生搭配情况。
2.2算法设计的对应方式假如有3个男生2个女生的配对方式图 232.3算法设计流程图图 3数据结构课程设计详细设计3.详细设计3.1设计思想建立链式循环队列来分别存储男生和女生,然后调用入队出队函数实现循环队列的配对输出。
为了充分利用向量空间,克服上述存储结构上溢现象的方法是将向量空间想象为一个首尾相接的圆环,存储在其中成为循环队列。
再循环队列中进行入队、出队操作时,头指针仍要加1,向前移动。
只不过当头指针指向上界时其加1操作变为指向下界,这样就可以通过出队再入队来实现男生女生的循环搭配了。
3.2设计关键算法(1)关键算法之一:初始化队列void InitQ(LinkQueue &Q){QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));Q.front=p;Q.rear=p;Q.front->next=NULL;}(2)关键算法之二:入队函数void EnQueue(LinkQueue &Q,int num)//入队函数{QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));p->num=num;p->next=NULL;Q.rear->next=p;Q.rear=p;}(3)关键算法之三:出队函数void DeQueue(LinkQueue &Q, int &num)//出队函数{QueuePtr p,q;if(Q.front==Q.rear)printf("队列为空");p=Q.front->next;num=p->num;Q.front->next=p->next;q=p->next;if(Q.rear==q)Q.rear=Q.front;free(p);}(4)关键算法之四:输出第i首曲子时女队的情况void printF(LinkQueue &F,int i) //输出第i首曲子时女队的情况{QueuePtr p;int n=1;while(n<i){printf("_ ");n++;}p=F.front->next;while(F.rear!=p){printf("%d ",p->num);p=p->next;}printf("%d \n",p->num);}数据结构课程设计调试分析4.调试分析4.1、测试及结果1.测试输入数据:男女生的个数曲子数图42.要查找学生的编号:图 53.输出结果为:每首曲子男女生搭配的情况程序运行界面如下:图6数据结构课程设计总结5.总结通过一周的学习和实践,解决实际问题(学生搭配问题),让我对循环队列有了更深的了解,对数据结构产生了浓厚的兴趣,同时也让我提高了解决实际问题的能力。
我们要不断的通过上机来提高自己的学习水平,在上机的同时改正了自己对某些算法的错误使用,使自己在通过程序解决问题时抓住关键算法,有了算法设计思想和流程图,并用C语言描绘出关键算法。
以前我对数据结构(C语言描述)的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。
让自己有一定的能力去改正一些常见的错误语法,很高兴这一周的学习让我对数据结构(C语言描述)有了新的认识,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
在这次课程设计的实验中,我收获了许多知识,通过查找大量资料,请教老师,以及不懈的努力,也培养了独立思考、动手操作的能力。
我也学会了许多学习和解决实际问题的方法,让我受益匪浅。
时间的紧缺成为一个很大的问题。
也希望老师可以为我们知道一下以后的发展方向。
如果可以让每个人都有动手焊接以及参与其他的各个流程,有专门的知道就更好了。
课程设计对我来说,趣味性强,不仅锻炼能力,而且可以学到很多东西,在与老师和同学的交流过程中,互动学习,将知识融会贯通,也增强了我和同学之间的团队合作的能力。
让我们知道只要努力,集中精力解决问题,一定会有收获的,过程也是很重要的。
在这次课程设计中我们要学会利用时间,在规定的时间内完成我们的任务,要逐渐养成用C语言编写程序的良好习惯。
这些对我来说都是一种锻炼,一个知识积累的过程,一种能力的提高。
要打好基础,才能用更好的办法,更简洁明了的程序解决实际问题,只有这样才能进一步的取得更好的成绩。
我们会更加努力,努力的去弥补自己的缺点,发展自己的优点,去充实自己,只有在了解了自己的长短之后,我们会更加珍惜拥有的,更加努力的去完善它,增进它。
要是能够让输出的结果在完美一点就好了,比如说龙一个设计封面。
在输出结果不会像从1-k曲连续输出一样。
还有从编号的数可以超过人数。
参考文献[1] 徐孝凯编著。
数据结构实用教程(C/C++描述)。
北京:清华大学出版社,1999[2] 严蔚敏主编。
数据结构题集(C语言版)。
北京:清华大学出版社,2006[3] 孙巧萍主编。
数据结构实训教程。
北京:科学出版社, 2000数据结构课程设计程序清单附页一程序清单#include <string.h>#include<stdio.h>#include <time.h>#include <malloc.h>#define MAXSIZE 60#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -1typedef int system;typedef struct QNode{int num;struct QNode *next;}QNode,* QueuePtr;typedef struct{QueuePtr front;QueuePtr rear;}LinkQueue;void sleep( clock_t wait ) //延迟函数{clock_t goal;goal = wait + clock();while( goal > clock() ) ;}void InitQ(LinkQueue &Q) //建立空队列{QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));Q.front=p;Q.rear=p;Q.front->next=NULL;}void EnQueue(LinkQueue &Q,int num){QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));p->num=num;p->next=NULL;Q.rear->next=p;Q.rear=p;}void DeQueue(LinkQueue &Q, int &num){QueuePtr p,q;if(Q.front==Q.rear)printf("队列为空");p=Q.front->next;num=p->num;Q.front->next=p->next;q=p->next;if(Q.rear==q)Q.rear=Q.front;free(p);}void printF(LinkQueue &F,int i) //打印第i首曲子时女队的情况{QueuePtr p;int n=1;while(n<i){printf("_ ");n++;}p=F.front->next;while(F.rear!=p){printf("%d ",p->num);p=p->next;}printf("%d \n",p->num);}void printM(LinkQueue &M,int i) //打印第i首曲子时男队的情况{QueuePtr p;int n=1;while(n<i){printf("_ ");n++;}p=M.front->next;while(M.rear!=p){数据结构课程设计程序清单printf("%d ",p->num);p=p->next;}printf("%d \n",p->num);}void main(){int m,n,k,i,a,b;int count=0,num;QueuePtr p,q;LinkQueue F; //女生队LinkQueue M; //男生队printf("请输入女生数量:");scanf("%d",&m);printf("请输入男生数量:");scanf("%d",&n);printf("请输曲子号:");scanf("%d",&k);printf("请输入要查找的男生编号:");scanf("%d",&a);printf("请输入要查找的女生编号:");scanf("%d",&b);InitQ(F);InitQ(M);for(i=1;i<=m;i++){EnQueue(F,i);}for(i=1;i<=n;i++){EnQueue(M,i);}for(i=1;i<=k;i++){system("CLS");printf("第%d首曲子 \n",i);printF(F,i);printM(M,i);p=F.front->next;q=M.front->next;printf("目前跳舞的是第%d号女生和第%d号男生\n",p->num,q->num);if(p->num==a&&q->num==b){count++;printf("第%d曲是要查找的男女生跳舞\n",i);}sleep(3000);DeQueue(F,num);EnQueue(F,num);DeQueue(M,num);EnQueue(M,num);}printf("该对男女生共跳舞%d次\n",count);}14。