最新数据结构与算法分析课程设计 数据结构课程设计的主要任务及目的(五篇)
数据结构与算法分析课程设计 数据结构课程设计的主要任务及目的篇一
《数据结构》课程设计教学任务书
一、课程设计的目的
数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。通过此次课程设计主要达到以下目的:
了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、课程设计的基本要求
1、独立思考,独立完成:每人任选一题,在课程设计中各任务要求独立完成,遇到问题大家可以相互讨论,互相调试检查,但不可以拷贝。
2、按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;
其中包括:
a)需求分析:
在该部分中叙述,每个模块的功能要求
b)概要设计
在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义。
c)详细设计
各个算法实现的源程序(可放在附录中),对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)
源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
d)调试分析
测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想等。
4、每人实现的结果必须进行检查和演示;程序源代码和程序的说明文件必须上交,作为考核内容的一部分;(上交时每人交一份,文件夹的取名规则为:“学号 姓名”,如“11207210188 张丽”。该文件夹下至少包括:“源代码”和“课程设计报告”,统一放在服务器的文件夹“d: / 3
/11级专升本数据结构课程设计”中)。
5、课程设计报告要对重点函数及结构进行说明。报告格式参照(报告示例)。
6、报告提交
时间:第16周星期五之前,迟交无成绩。
形式:课程设计报告(要求书写课程设计报告)和电子文档。
三、课程设计内容:
1.大数相乘问题
例如:输入第一个数为:***172586,输入第二个数为:***7则程序运行后输出***172586****7=正确答案。2.矩阵的运算
采用十字链表表示稀疏矩阵,并实现矩阵的加减法和乘法运算, 要求:要检查有关运算的条件,并对错误的条件产生报警。3. 订票系统
设计航班信息,订票信息的存储结构,设计程序完成如下功能:
录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票: 可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息:当航班信息改变可以修改航班数据文件 6. 宾馆订房和退房系统
假设一个宾馆有n个标准的客房,每个标准客房有m个标准间,利用链表、栈或者队列等数据结构设计出具有订房和退房等功能的管理系统。7. 建立二叉树和线索二叉树
分别用以下方法建立二叉树: 1)用先序遍历的输入序列 2)用层次遍历的输入序列 3)用先序和中序遍历的结果
最后对所建立的二叉树进行中序线索化,并对此线索树进行中序遍历(不使用栈)。8.校园导航问题
设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。9.马的遍历问题
设计程序完成如下要求:在中国象棋棋盘上,对任一位置上放置的一个马,均能选择一个合适的路线,使得该棋子能按象棋的规则不重复地走过棋盘上的每一位置。
要求:依次输出所走过的各位置的坐标。/ 3
11.设计一个模拟计算器来完成表达式的计算
要求对包含加、减、乘、除、括号运算符的任意整型表达式进行求解,操作数可以是多位数。12.八皇后问题
设计程序完成如下要求:在8×8的国际象样棋盘上,放置8个皇后,使得这8个棋子不能互相被对方吃掉。
要求:依次输出各种成功的放置方法。13.图的遍历过程演示
设计程序完成如下功能:对给定的图结构和起点,产生深度优先遍历和广度优先遍历序列,并给出求解过程的动态演示。14.构造n个城市连接的最小生成树
一个地区的n个城市间的距离网,用prim算法或kruskal算法建立最小生成树,并计算得到的最小生成树的代价。基本要求:
1)城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。
2)表示城市间距离网的邻接矩阵(要求至少6个城市,10条边)15. 药店的药品销售统计系统
设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。
基本要求:在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。对各药品的药名、单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序、堆排等方法。
四、上交作业及成绩评定
1、上交要求
上交设计报告和源程序。其中设计报告要以手写报告的形式上交;电子版内容包括程序源码和设计报告的电子文档。整个班级的设计均放在一个文件夹中。
2、课程设计报告注意事项:
1)运行结果请截图(alt prtsc);
2)系统功能模块介绍请请采用流程图形式; 3)课程设计总结可以从以下几个方面书写 : 课程设计的收获、遇到问题及其解决过程、程序调试技巧、在课程设计过程中对《数据结构》课程的认识等内容。
3、评分标准
根据完成任务的情况、课程设计报告书的质量和课程设计过程中的工作态度等按照30%、50%、20%加权综合打分。成绩评定实行百分制。上机程序检查未通过者、无设计报告者以及严重抄袭他人设计者,成绩为不及格。
/ 3
数据结构与算法分析课程设计 数据结构课程设计的主要任务及目的篇二
2014/2015学年第一学期
《数据结构与算法课程设计》任务书
一、课程设计目的
数据结构与算法课程设计是《数据结构与算法》课程教学必不可缺的一个重要环节,它可加深学生对该课程所学内容的进一步的理解与巩固,是将计算机课程与实际问题相联接的关键步骤。通过课程设计,能够提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力,因而必须给予足够的重视。
2二、课程设计题目
2.1 棋盘覆盖
【间题描述】
在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的l型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个l型骨牌不得重叠覆盖。
【基本要求】
(1)输入k以及特殊方格所在的行号dr和特殊方格的列号dc。
1(2)要求输出每一步用什么形态l型骨牌覆盖,覆盖后得到的棋盘图形。(3)如果输出的结果只是用矩阵表示则为良好,用图形表示则为优。【测试数据】 【实现提示】
使用分治策略,把棋盘划分成4个小棋盘,然后用一个l型骨牌覆盖将这4个小棋盘变为都具有特殊方格的棋盘。
2.2 hanoi塔问题(*)
【问题描述】
设a,b,c是三个塔座。开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠放在一起,各圆盘从小到大编号为1,2,„,n,要求将塔座a上的这一叠圆盘移到塔座b上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则:
规则(1)每次只能移动一个圆盘;
规则(2)任何时刻都部允许将较大的圆盘压在较小的圆盘之上;
规则(3)在满足移动规则(1)和(2)的前提下,可将圆盘移至a,b,c中任一塔座上。
【基本要求】
(1)设计出hannoi塔游戏,供用户玩;(2)提供正确的搬运方法。【实现说明】
正确的搬运方法使用递归方法实现。【测试数据】
2.3 矩阵连乘问题
【问题描述】
给定n个矩阵{a1,a2,...,an},其中ai和ai1是可乘的,i=1,2,„,n-1。考察这n个矩阵的连乘积a1a2,...,an,通过加括号方式,找出矩阵乘积所需的最少计算量的方法。
【基本要求】
输入每个矩阵的行和列,要求输出最少计算量的矩阵乘积方法,如(a1(a2(a3a4)))。【实现说明】 使用动态规划方法。
2.4 多边形游戏(*)
【问题描述】
多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构成的多边形。每个顶点被赋予一个整数值,每条边被赋予一个运算符“+”或“*”。所有边依次用整数从1到n编号。
游戏第1步,将一条边删除。随后n-1步按以下方式操作:
选择一条边e及由e连接着的2个顶点v1和v2;
用一个新的顶点取代边e及用e连接着的2个顶点v1和v2,将由顶点v1和v2的整数值通过边e上的运算得到的结果赋予新顶点。
最后,所有边都被删除,游戏结束。游戏的得分就是所剩顶点上的整数值。【基本要求】
设计该游戏供用户玩;
对于给定的多边形,给出最高得分计算。【实现说明】 使用动态规划方法。
2.5 0-1背包问题
【问题描述】
给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为c。问应如何选择装入背包种的物品,使得装入背包种物品的总价值最大。
【基本要求】
使用动态规划、回溯法以及分支界限三种方法实现。【测试数据】 【实现提示】
2.6 排序方法
【问题描述】
给定n个元素,要求对这n个元素进行排序。【基本要求】
使用多种排序方法,越多越好;
比较每种排序方法的时间复杂度和空间复杂度。【测试数据】 【实现提示】
2.7 哈夫曼编码译码器
【问题描述】
设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件
(压缩文件,);反过来,可将一个压缩文件译码还原为一个文本文件(.txt)。
【基本要求】
(1)输入一个待压缩的英文文本文件,统计文本文件中各字符的个数作为权值,生成哈夫曼树;
(2)将文本文件利用哈夫曼树进行编码,生成压缩文件(后缀名cod)(3)输入一个待解压的压缩文件名称,并利用相应的哈夫曼树将编码序列译码。【实现说明】
(1)在构造哈夫曼树时,可以利用不同的线性表存放二叉树:用顺序表、单链表、5 循环单链表、双向链表、循环双链表;
(2)在构造哈夫曼树时,可以利用优先队列存放二叉树:顺序队列、链队列(可以是单链表、双链表等,还可以用静态结构去实现),可以分别在入队列或出队列时实现优先级;
(3)二叉树本身也可以用静态数组模拟;(4)使用贪心算法
2.8 迷宫问题(*)
【问题描述】
设计一个迷宫并给出正确走法。如: *** *** *** *** *** *** *** 其中0表示可以走,1表示不能走,每一步只能向上下左右移动。【基本要求】
(1)给出迷宫的正确走法,包括没有解的情况;(2)要求界面友好。【测试数据】
【实现提示】 使用回溯的方法。
2.9 继续邮资问题
【问题描述】
假设某国家发行了n种不同面值的邮票,并且规定每张信封上最多只允许贴m张邮票。连续邮资问题要求对于给定的n和m的值,给出邮票面值的最佳设计,在1张信封上贴出从邮资1开始,增量为1的最大连续邮资区间。
【基本要求】
输入任意的m和n都能设计出最佳的方案,并给出连续邮资区间。【实现说明】 【测试数据】
2.10 图的m着色问题
【问题描述】
给定一个地图,要求给出该地图的最少着色方案 【基本要求】
(1)把地图以及最少着色的方案显示出来则为良好。(2)有友好的界面则为优 【实现说明】
2.11 猜数字游戏(*)
【问题描述】
孩子想1个由4种颜色组成的序列(4种颜色不一定完全不同)。每种颜色只能是6种颜色之一。方便起见,我们用数字1到6表示6种颜色。
计算机必须根据孩子的回答找出孩子所想的颜色序列。计算机在屏幕上显示一个序列,孩子用键盘回答以下两个问题:
猜对的颜色中位置不对的有几个? 猜对的颜色中位置对的有几个? 【基本要求】
编程使至多6次问答后猜出序列,如果办不到,至多10次问答后猜出序列。【实现说明】 【测试数据】
如孩子想的是4655 计算机猜想 颜色对位置错的数目 颜色和位置都对的数目 1234 1 0 5156 2 1 6165 1 1 5625 1 2 5653 1 2 8 4655 0 4 2.12 大整数计算器
【问题描述】
设计一个计算器实现两个任意长得整数的加、减、乘、除。【基本要求】
设计一个实现任意长的整数进行四则运算的演示程序,要求输入任意长的整数进行四则运算,都能得到精确的结果。
【实现说明】
2.13 查找搜索技术
【问题描述】
给定任意的数组,对于给定的数,查找是否在数组中,如果在,则返回给定数在数组的位置,不在则返回不在信息。
【基本要求】
(1)使用多种搜索方法,越多越好,其中二分搜索技术、线性时间选择是必须的;(2)比较每种排序方法的时间复杂度和空间复杂度。【实现说明】
2.14 tom,jerry和奶酪(*)
【问题描述】
猫tom和鼠jerry同住在一矩阵地窖中。猫要吃鼠,鼠要吃奶酪。地窖中有2种地砖:有洞砖与无洞砖。一个洞足以让鼠钻入,但猫不能。
以菜单形式完成以下任务:
随机地生成一个地窖,并给猫、鼠和奶酪安排一个位置。如: fffffffffffffff fppppppppppppcf fhfffffffffffpf fpppjhppppppppf fpffffffpffffff fpppppppppptppf fffffffffffffff 其中c表示猫,j表示鼠,h表示洞,f表示不能通行(2)鼠先行,猫后行。两者皆满足以下规定: 1)必须上、下、左或右移动 2)鼠必须走1步(穿过p或h)3)猫必须走1或2步(穿过p)
(3)当鼠吃到奶酪或猫抓到鼠时,游戏结束。【基本要求】 【实现说明】
2.15 布线问题
【问题描述】
印刷电路板将布线区域划分成n×m个方格阵列,精确的电路布线问题要求确定连接方格a的中点到方格b的中点的最短布线方案。在布线时,电路只能沿着直线或直角布线。为了避免线路相交,已布了线的方格做了封锁标记,其他线路不允许穿过被封锁的方格。
【基本要求】(1)解决题目的问题(2)提供友好的界面 【实现说明】 使用分支限界法。
2.16 魔方工具包(*)
【问题描述】
一个魔方是一个由3×3×3个小立方体组成的立方体。最初立方体的6个面分别涂上不同颜色,我们称之为“最初魔方”。魔方的每一面上的3×3个小立方体组成它的一层。
魔方所能见到的每一层(6个面)都能旋转90,180,220或360度。所有层的旋转轴都垂直于面且通过其中心。旋转的结果是另一个魔方,它的所有面的颜色都改变了。
现在我们用字符来代替颜色:u=上,d=下,f=前,b=后,l=左,r=右。任何一个序列的旋转都能表示成{u,r,f,b,l,d}中一些字符组成的字符串,其中每个字符表示它所 11 指定的面顺时针旋转90度。
【基本要求】
(1)编程完成以下3个任务(菜单形式),你可以假设任何输入的字串长度都
最新数据结构与算法分析课程设计 数据结构课程设计的主要任务及目的(五篇)
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。