《数据结构与算法分析》

上传人:kms****20 文档编号:40501328 上传时间:2018-05-26 格式:DOC 页数:10 大小:36.50KB
返回 下载 相关 举报
《数据结构与算法分析》_第1页
第1页 / 共10页
《数据结构与算法分析》_第2页
第2页 / 共10页
《数据结构与算法分析》_第3页
第3页 / 共10页
《数据结构与算法分析》_第4页
第4页 / 共10页
《数据结构与算法分析》_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《《数据结构与算法分析》》由会员分享,可在线阅读,更多相关《《数据结构与算法分析》(10页珍藏版)》请在金锄头文库上搜索。

1、数据结构与算法分析数据结构与算法分析个人总结,仅供交流 个人总结 数据结构与算法分析课程内容体系主要内容教学单元模块具体教学内容绪论绪论部分是全书的预备知识,主要对 ADL 语言、数据结构与算法、算法分析基础、OOP、和 C+做了简单介绍基本数据结构基本数据结构部分包括线性表、堆栈与队列、数组、字符串、整数集合类、树(包括 AVL 树、伸展树等) 、图(包括网络流等问题的讨论) 、散列(Hash)等典型算法典型算法部分主要介绍了若干典型算法的实现,并给出必要的复杂性分析和比较过程,具体包括递归、排序、查找和内存管理等复杂数据结构复杂数据结构部分主要包括优先级队列、不相交集合类和文件结构等算法设

2、计技巧典型算法设计技巧的介绍,主要包括贪婪算法、分治算法、动态规划、回溯算法和随机化算法等应用应用部分是上述数据结构和典型算法的一些应用示例,具体包括事件驱动模拟、等价类、残缺棋盘和图象压缩等问题的讨论,在课时允许的情况下还会介绍摊还分析、红黑树等数据结构与算法分析课程实践内容体系主要内容实践教学单元模块实践教学基本要求实践教学具体内容趣味程序设计实践1.熟悉编程环境2.复习 C 语言程序设计的基本内容1.开学第一、二周布置若干趣味程序设计题目,如奇数阶幻阵算法、万年历算法、迷宫算法等。并完成:2.随机产生 n 个整数,然后用一种排序算法将它们从小到大排序。3.试编一程序,用贪心法求解一般的着

3、色问题。链表应用实验1.熟悉链表结构2.掌握链表结构上的各种操作3.学会运用链表结构求解问题1.试将本章介绍的两种 Josephus 问题的求解过程在计算机中实现,实现时要求输出的不是整数,而是实际的人名。2.设 A 与 B 分别为两个带有头结点的有序循环链表(所谓有序是指链接点按数据域值大小链接,本题不妨设按数据域值从小到大排列) ,list1 和 list2 分别为指向两个链表的指针。请写出并在计算机上实现将这两个链表合并为一个带头结点的有序循环链表的算法。栈与队列应用实验1.熟悉栈和队列结构2.掌握栈和队列结构上的各种操作3.学会运用栈和队列结构求解问题1. 设计实现一个求解 n 阶 H

4、anoi 塔问题的算法提示:将 n 个圆盘由 A 依次移到 C,B 作为辅助塔座。当 n=1 时,可以直接完成。否则,将塔座 A 顶上的 n-1 个圆盘移动到塔座 B 上,用塔座 C 作为辅助塔座;然后移第 n 个圆盘;最后将塔座 B 上的 n-1 个圆盘移到塔座 C 上,并用塔座 A 作为辅助塔座。2. 根据书中介绍的思想,设计并实现一个对简化表达式求值的系统。3. 在计算机上模拟实现农夫过河问题的解。文本文件检索实验1.熟悉字符串的操作2.学会运用字符串的操作进行文本检索和查询。1. 根据课堂介绍设计实现 KMP 算法2. 试设计一个简单的文本编辑器,使之具有对字符串的输入、输出、插入、删

5、除、查找和替换等功能3. 设计实现一个通用的判定回文个数问题的算法程序 稀疏矩阵和广义表实验1熟悉稀疏矩阵和广义表结构2掌握稀疏矩阵和广义表结构上的各种操作3学会运用稀疏矩阵和广义表结构求解问题1. 设计实现两个普通矩阵相乘的算法2. 实现用三元组表示法实现稀疏矩阵相加及转置算法3. 设计实现两个 N 次一元多项式相加的算法程序 树结构实验1.熟悉树和二叉树结构2.掌握树和二叉树结构上的各种操作3.学会运用树和二叉树结构求解问题1. 设计一个程序,根据二叉树的先根序列和对称序序列创建一棵用左右指针表示的二叉树2. 根据哈夫曼算法创建哈夫曼树,并求树中每个外部结点的编码3. 设计一个程序,把中缀

6、表达式转换成一棵二叉树,然后通过后序遍历计算表达式的值4. 设计实现一个完成对 BST 树进行插入、删除、查找操作的算法,并希望有部分同学能进一步把该算法改写为针对 AVL 树的相关算法图结构实验1.熟悉图结构2.掌握图结构上的各种操作3.学会运用图结构求解问题采用两种不同的图的表示方法,实现拓扑排序和关键路径的求解过程。使用实现的算法对于下图所示的 AOE 网,求出各活动的可能的最早开始时间和最晚开始时间。输出整个工程的最短完成时间是多少? 哪些活动是关键活动? 说明哪项活动提高速度后能导致整个工程提前完成?分析不同存储结构对于算法效率的影响。散列表实验1.熟悉散列表结构2.掌握散列函数的生

7、成方法,掌握常规冲突处理办法3. 学会运用散列结构求解问题试根据全年级学生的姓名,构造一个散列表,选择适当的散列函数和解决碰撞方法,设计并实现插入、删除和查找算法,统计碰撞发生的次数。 (用拉链法解决碰撞时负载因子取 2,用开地址法时取1/2)航班信息查询与检索实验设计1.掌握查找与排序的各种算法2.学会选用和设计实际问题所需的查找与排序算法对于直接插入排序、直接选择排序、起泡排序、Shell 排序、快速排序和堆排序等六种算法进行上机实习。要求:1. 被排序的对象由计算机随机生成,长度分别取 20,100,500 三种。2. 算法中增加比较次数和移动次数的统计功能。3. 对实习的结果做比较分析

8、。4. 设计实现一个航班信息查询与检索系统课程实验参考教材:* 魏开平等编著. 数据结构辅导与实验. 清华大学出版社,2006 年第 1 版* 瞿有甜, 数据结构与算法分析实验指导书,2004.9数据结构与算法分析课程设计内容体系主要内容数据结构课程设计课程,可使学生深化理解书本知识,致力于用学过的理论知识和上机取得的实践经验,解决具体、复杂的实际问题,培养软件工作者所需的动手能力、独立解决问题的能力。该课程设计侧重软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧、多人合作,以至一整套软件工作规范的训练和科学作风的培养。一、 课程设计要求学生必须仔细阅读数据

9、结构与算法分析课程设计方案,认真主动完成课程设计的要求。有问题及时主动通过各种方式与教师联系沟通。学生要发挥自主学习的能力,充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时的向教师汇报。课程设计按照教学要求需要两周时间完成,两周中每天(按每周 5 天)至少要上 3-4 小时的机来调试 C 语言设计的程序,总共至少要上机调试程序 30 小时。二、 数据结构课程设计的具体内容本次课程设计完成如下模块(共 9 个模块,学生可以在其中至少挑选 6 个功能块完成,但有*号的模块是必须要选择的)(1) 运动会分数统计*任务:参加运动会有 n 个学校,学校编号为 1

10、.n。比赛分成 m 个男子项目,和 w 个女子项目。项目编号为男子 1.m,女子 m+1.m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。 (m=20,n=20)功能要求:* 可以输入各个项目的前三名或前五名的成绩;* 能统计各学校总分;* 可以按学校编号、学校总分、男女团体总分排序输出;* 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 规定:输入数据形式和范围:20 以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分

11、数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。 (数据文件的数据读写方法等相关内容在 c 语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用 1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;(2)订票系统任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,

12、输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓) ;可以输入起飞抵达城市,查询飞机航班情况;订票:可以订票(订票情况可以存在一个数据文件中,结构自己设定) ,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能; (3)文章编辑*功能:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过 80 个字符,共 N 行;要求:(1)

13、分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。 (4)存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。输出形式:(1)分行输出用户输入的各行字符;(2)分 4 行输出“全部字母数“、“数字个数“、“空格个数“、“文章总字数“(3)输出删除某一字符串后的文章;(4)约瑟夫环(Joseph)任务:编号是 1,2,.,n 的 n 个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数) 。一开始任选一个正整数作为报数上限值 m,

14、从第一个仍开始顺时针方向自 1 开始顺序报数,报到 m时停止报数。报 m 的人出列,将他的密码作为新的 m 值,从他在顺时针方向的下一个人开始重新从 1 报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。测试数据:m 的初值为 20,n=7 ,7 个人的密码依次为3,1,7,2,4,7,4,首先 m=6,则正确的输出是什么?输入数据:建立输入处理输入数据,输入 m 的初值,n ,输入每个人的密码,建立单循环链表。输出形式:建立一个输出函数,将正确的输出序列(5)猴子选大王*任务:一堆猴子都有编号,编号是

15、 1,2,3 .m ,这群猴子(m 个)按照 1-m 的顺序围坐一圈,从第 1 开始数,每数到第 N 个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。输入数据:输入 m,n m,n 为整数,nm输出形式:中文提示按照 m 个猴子,数 n 个数的方法,输出为大王的猴子是几号 ,建立一个函数来实现此功能 (6)建立二叉树,层序、先序遍历( 用递归或非递归的方法都可以)*任务:要求能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列;分别建立建立二叉树存储结构的的输入函数、输出层序遍历序列的函数、输出先序遍历序列的函数; 个人总结,仅供交流 (7)赫夫曼树的建立 个人总结 任务 :建立建立最优二叉树函数 要求:可以建立函数输入二叉树,并输出其赫夫曼树在上交资料中请写明:存储结构、 基本算

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号