在日常学习、工作或生活中,大家总少不了接触习作或则例文吧,通过文章可以把我们这些零零散散的思想,聚集在一块。写例文的时侯须要注意哪些呢?有什么格式须要注意呢?以下是小编为你们搜集的优秀例文,欢迎你们分享阅读。
数据结构课程实验教学大纲篇一
data structure course design
一、课程的性质、教学目的和要求
《数据结构》是计算机软件的一门基础课程,计算机科学各领域及有关的应用软件都要用到各类类型的数据结构。学好数据结构对把握实际编程能力是很有帮助的。为了学好《数据结构》,必须编撰一些在特定数据结构上的算法,通过上机调试,才能更好地把握各类数据结构及其特性,同时提升解决计算机应用实际问题的能力。
二、设计要点
1.设计和调试过程要规范化。① 需求分析
将题目中要求的功能进行表述剖析,并且设计解决此问题的数据储存结构,(有些题目早已指定了数据储存的,按照指定的设计),设计或表述解决此问题的算法,描述算法建议使用流程图,进行算法剖析指明关键词句的时间复杂度。
给出实现功能的一组或多组测试数据,程序调试后,将根据此测试数据进行测试的结果列下来。
对有些题目提出算法改进方案,比较不同算法的优缺点。
如果程序不能正常运行,写出实现此算法中碰到的问题,和改进技巧。②源程序(可以是一组源程序,即详尽设计部份)
源程序要根据写程序的规则来编撰。要结构清晰,重点函数的重点变量,重点功能部份要加上清晰的程序注释。
程序才能运行,要有基本的容错功能。尽量避开出现操作错误时出现死循环。
2.课程设计实习报告的书写格式
① 设计题目(任选其三)②运行环境(软、硬件环境)③算法设计的思想 ④算法的流程图 ⑤算法设计剖析 ⑥源代码 ⑦运行结果剖析 ⑧收获及感受 3.施行方法
可设2-3人一题,安排在《数据结构》课程开课学期布置题目,然后在期终前两周完成。
三.设计要求
学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检查自己的计划完成情况,及时的向班主任汇报。课程设计根据教学要求须要1周时间完成,1周中每晚起码要上6-8小时的机来调试c语言设计的程序,总共起码要上机调试程序30小时。为保证质量,需要每位中学生将每晚的上机调试程序的时间记录出来,作为衡量成绩的标准之一。
四.设计题目
1、校园导游程序
[问题描述]
用无向网表示你所在中学的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的公路,存放路径宽度等信息。要求才能回答有关景点介绍、游览路径等问题。
[基本要求](1)查询各景点的相关信息;
(2)查询图中任意两个景点间的最短路径。
(3)查询图中任意两个景点间的所有路径。
(4)增加、删除、更新有关景点和公路的信息。
[选作内容]
(1)求多个景点的最佳(最短)游览路径。
(2)区分机动车道和人行道。
(3)实现导游图的仿真界面。
2、算术表达式求值
[问题描述]
一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括弧和表达式起始、结束符“#”,如:#(7+15)*(23-28/4)#。引入表达式起始、结束符是为了便捷。编程借助“算符优先法”求算术表达式的值。
[基本要求]
(1)从鼠标读入一个合法的算术表达式,输出正确的结果。
(2)显示输入序列和栈的变化过程。
[选作内容]
扩充运算符集合。
引入变量操作数。
操作数类型扩展到实数。
3、文学研究助手
[问题描述]
文学研究人员须要统计某篇英语小说中个别形容词的出现次数和位置。试写一个实现这一目标的文字统计系统,称为“文学研究助手”。[基本要求]
英文小说存于一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行以后就全部完成。程序的输出结果是每位词的出现次数和出现位置所在行的行号,格式自行设计。[测试数据]
以你的源程序模拟英语小说,程序语言保留字集作为待统计的词汇集。[实现提示]
设小说中的词汇一律不跨行。这样,每读入一行,就统计每位词在这行中的出现次数。出现位置所在行的行号可以用数组储存。若某行中出现了不止一次,不必存多个相同的行号。
如果读者希望达到选作部份(1)和(2)所提出的要求,则首先应把kmp算法改写成如下的等价方式,再将它推广到多个模式的情形。[选作内容]
(1)模式匹配要基于kmp算法。
(2)整个统计过程中只对小说文字扫描一遍以提升效率。
(3)假设小说中的每位词组或则从行首开始,或者后置以一个空格符。利用词组匹配特性另写一个高效的统计程序,与kmp算法统计程序进行效率比较。
(4)推广到更通常的模式集匹配问题,并设待查模式串可以跨行(提示:定义操作getachar)
4.迷宫求解
[问题描述]
可以输入一个任意大小的迷宫数据,用非递归的方式求出一条走出迷宫的路径,并将路径输出;
[基本要求]
含有两个以上的迷宫图,由用户选择哪一张迷宫图; 实现深度优先、广度优先两种回溯法。
在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、算法的时间复杂度、另外可以提出算法的改进方式;
[实现提示]
可以用一个二维数组储存迷宫图c语言程序课程设计题目计划书 简单计算器问题描述,值为1或则0分别表示通路和不通; 搜索路径可以参考树的深度优先和广度优先算法。
5.括弧匹配的检验
[问题描述]
假设表达式中容许有两种括弧:圆括号和方括号,其嵌套的次序随便,即cc或[([ ] [ ])]等为正确格式,[(])或(((]均为不正确的格式。检验括弧是否匹配的方式可用“期待的急迫程度”这个概念来描述。例如:考虑下述的括弧序列:
[([ ] [ ])]
当计算机接受了第1个括弧之后,他期盼着与其匹配的第8个括弧的出现,然而等来的却是第2个括弧,此时第1个括弧“[”只能暂时靠边,而急迫等待与第2个括弧相匹配的 第7个括弧“)”的出现,类似的,因只等来了第3个括弧“[”,此时,其期盼的急迫程度较第2个括弧更急迫,则第2个括弧只能靠边,让坐落第3个括弧,显然第3个括弧的期盼急迫程度低于第2个括弧,而第2个括弧的期盼急迫程度低于第1个括弧;在接受了第4个括弧以后,第3个括弧的期盼得到了满足,消解以后,第2个括弧的期盼匹配就成了最迫切的任务了,,依次类推。可见这个处理过程恰好和栈的特征相吻合。
[基本要求]
设置一个栈,每读入一个括弧,若是左括弧,则作为一个新的更紧迫的期盼压入栈中,若是右括弧,则或则是和当前栈顶的括弧相匹配,或者是不合法的情况,输出“此串括弧匹配不合法”。在初始和结束时,栈应当是空的。
[测试数据]
输入 #([ ]())#,结果“匹配”
输入 #[()]#,结果“此串括弧匹配不合法”
#为起始和结束标志。
6.停车场管理
[问题描述]
设停车场内只有一个可停放n辆车辆的细长通道,且只有一个房门可供车辆进出。汽车在停车场内按汽车抵达时间的先后次序,依次由北向南排列(大门在最南端,最先抵达的第一辆车停放在车场的最北端),若车场内已停满n辆车辆,则后来的车辆只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它以后开入的汽车必须先退出车场为它让路,待该辆车开出房门外,其它汽车再按原顺序步入车场,每辆停放在车场的车在它离开停车场时必须按它逗留的时间长短收取费用。试为停车场编制按上述要求进行管理的模拟程序。[测试数据]
设n=2,输入数据为:(‘a’,1,5),(‘a’,2,10),(‘d’,1,15),(‘a’,3,20),(‘a’,4,25),(‘a’,5,30),(‘d’,2,35),(‘d’,4,40),(‘e’,0,0)。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车车牌号码及抵达或离去的时刻,其中,‘a’表示抵达;‘d’表示离去,‘e’表示输入结束。[基本要求]
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车车牌号码及抵达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是汽车抵达,则输出车辆在停车场内或便道上的停车位置;若是车离去;则输出车辆在停车场内逗留的时间和应缴纳的费用(在便道上逗留的时间不收费)。栈以次序结构实现,队列以数组实现。[实现提示]
需另设一个栈,临时停放为给要离去的车辆让路而从停车场退下来的车辆,也用顺序存储结构实现。输入数据按抵达或离去的时刻有序。栈中每位元素表示一辆车辆,包含两个数据项:汽车的车牌号码和步入停车场的时刻。[选作内容]
(1)两个栈共享空间,思考应开辟链表的空间是多少?
(2)汽车可有不同种类,则它们的占地面积不同,收费标准也不同,如1辆货车和1.5辆小汽车的占地面积相同,1辆十轮货车占地面积相当于3辆小汽车的占地面积。
(3)汽车可以直接从便道上开走,此时排在它上面的车辆要先开走让路,然后再依次排到队尾。
(4)停放在便道上的车辆也收费,收费标准比停放在停车场的车低,请思索怎么更改结构以满足这些要求。
7.简单行编辑程序
[问题描述]
文本编辑程序是借助计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等更改操作。限制这种操作以行为单位进行的编辑程序称为行编辑程序。
被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法既不经济,也不总能实现。一种解决方式是逐段地编辑。任何时刻只把待编辑文件的一段置于显存,称为活区。试根据这些方式实现一个简单的行编辑程序。设文件每行不超过320个字符,很少超过80字符。[基本要求]
实现以下4条基本编辑命令:
(1)行插入。格式:i
将插入活区中第行以后
(2)行删掉。格式:d[□]
删除活区中第行(到第行)。两种格式的事例是:“d10↙”和“d10□14↙”
(3)活区切换。格式:n
将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。
(4)活区显示。格式:p
逐页地(每页20行)显示活区内容,每显示一页然后请用户决定是否继续显示之后各页(如果存在)。印出的每一行要后置以行号和一个空格符,行号固定占4位,增量为1。
各条命令中的行号均须在活区中各行行号范围之内c语言程序课程设计题目计划书 简单计算器问题描述,只有插入命令的行号可以等于活区第一行行号减1,表示插入当前屏幕中第一行之前,否则命令参数非法。[测试数据]
由中学生根据软件工程的测试技术自己确定。注意测试边界数据,如首行、尾行。[实现提示]
(1)设活区的大小用行数activemaxlen(可设为100)来描述。考虑到文本文件局长一般为正态分布,且峰值在60到70之间,用320×activemaxlen大小的字符链表实现储存将导致大量浪费。可以以标准行块为单位为各行分配储存,每个标准行块含81个字符。这些行块可以组成一个字段,也可以借助动态 8 链表联接上去。一行文字可能占多个行块。行尾可用一个特殊的ascii字符(如(012)8)标识。此外,还应记住活区起始行号。行插入将导致此后各行行号的次序下推。
(2)初始化过程包括:请用户提供输入文件名(空串表示无输入文件)和输出文件名,两者不能相同。然后尽可能多地从输入文件中读入各行,但不超过activemaxlen-x。x的值可以自定,例如20。
(3)在执行行插入命令的过程中,每接收到一行时到要检测活区大小是否已达activemaxlen。如果是,则为了在插入这一行以后仍保持活区大小不超过activemaxlen,应将插入点之前的活区部份中第一行输出到输出文件中;若插入点为第一行之前,则只好将新插入的这一行输出。
(4)若输入文件仍未读完,活区切换命令可将原活区中最后几行留在活区底部,以保持阅读连续性;否则,它意味着结束编辑或开始编辑另一个文件。
(5)可令前三条命令执行后手动调用活区显示。[选作内容]
(1)对于命令格式非法等一切错误作严格检测和适当处理。
(2)加入更复杂的编辑操作,如对某行进行串替换;在活区内进行模式匹配等,格式可以为s@@和m。
8.图遍历的演示
[问题描述]
很多涉及图上操作的算法都是以图的遍历操作为基础的。试写一个程序,演示无向图的遍历操作。[基本要求]
以邻接表为储存结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。[测试数据]
由中学生根据软件工程的测试技术自己确定。注意测试边界数据,如单个结点。[实现提示]
设图的结点不超过30个,每个结点用一个编号表示(如果一个图有n个结点,则它们的编号分别为1,2,,n)。通过输入图的全部边输入一个图,每个边为一个数对,可以对边的输入次序做出某种限制。注意,生成树的边是有向边,端点次序不能颠倒。
[选作内容]
(1)借助于栈类型(自己定义和实现)将深度优先遍历用非递归算法实现。
(2)以邻接多重表为储存结构构建深度优先生成树和广度优先生成树,再按凸出表或树状复印生成树
(3)实现有向图的遍历操作。
9、赫夫曼树的构建
*问题描述:建立完善最优二叉树函数
*要求:可以构建函数输入二叉树,并输出其赫夫曼树
在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、输入输出、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方式;
10、图的构建及输出
*问题描述:建立图的储存结构(图的类型可以是有向图、无向图、有向网、无向网,学生可以任选两种类型),能够输入图的顶点和边的信息,并储存到相应储存结构中,而后输出图的邻接矩阵。
11、各种排序
*问题描述:对30000个随机整数,利用插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序等排序方式进行排序,并统计每一种排序上机所耗费的时间。
*输入的数据方式为任何一个正整数,大小不限。*输出的方式:数字大小挨个递增的数列?
12、图的遍历
*问题描述:对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后借助队列的五种基本运算(置空队列、进队、出队、取队头元素、判队空)实现图的广度优先搜索游历。
13、线性表的操作
*问题描述:利作数组的插入运算构建线性链表,然后借助数组的查找、删除、计数、输出等运算反复实现数组的这种操作(插入、删除、查找、计数、输出单独写成函数的方式),并能在屏幕上输出操作前后的结果。
14、编制一个求解迷宫通路的图形界面演示程序。*问题描述:
1)输入一个任意大小的迷宫,任设起点、终点、障碍,用栈求出一条走出迷宫的路径,并显示在屏幕上。
2)根据用户界面提示,用鼠标输入。home键设置迷宫起点,end键设终点,上下左右箭头键联通,enter键添加墙,del键删掉墙,完成后按f9键演示,esc键退出。
3)橙色的实心小圆圈表示起点,绿色实心圆圈表示终点,空心圆圈表示足迹,红色小方块表示墙。4)本程序只求出一条成功的通路,但若对求解函数mazepath稍加修改即可求得全部路径。此外,因受图形界面限制,不能保存或载入测试文件(此功能可在maze_text中实现)。
5)当未输入起点时,消息显示“error: you must set startplace.”;未输入终点时,显示“error: you must set endplace.” 找到路径时,屏幕显示足迹,并在消息框出现path found,否则消掉足迹,显示path not found.15.一元稀疏方程计算器
*问题描述:一元方程简单计算器的基本功能是:(1)输入并完善方程;(2)输出方程,输出方式为整数序列n,c1,e1,c2,e2,,cn,en,其中n是方程的项数,ci和ei分别是第i项的系数和指数,序列指指数升序排列;(3)多项式a和b相乘,建立方程a+b;(4)多项式a和b相加,建立方程a-b。*实现提示:用带头结点的单数组储存方程,多项式的项数存在头结点。
16.算术表达式求值演示
*问题描述:表达式求值是实现程序设计语言的基本问题之一,也是栈的应用的一个典型事例。设计一个程序,演示用算符优先法对算术表达式求值的过程。
*基本要求:以字符序列的方式从终端上输入句型正确的、不含变量的整数表达式。利用教材中给出的算符优先关系,实现对算术四则混和运算表达式的求值,并仿造教材例3-1演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
*实现提示:(1)设置运算栈和运算数栈辅助剖析算符优先关系。(2)在输入表达式的字符序列的同时,完成运算符和运算数(整数)的辨识处理,以及相应的运算。(3)在辨识出运算数的同时,要将其字符序列方式转换成整数方式。
*选作内容:(1)扩充运算符集,如降低乘方、单目减、赋值等运算;(2)运算量可以是变量;(3)运算量可以是实数类型;(4)计数器的功能和仿镇界面。
17.稀疏矩阵运算器
*问题描述:稀疏矩阵是指这些多数元素为0的矩阵。利用“稀疏”特点进行储存和估算可以大大节约储存空间,提高估算效率。实现一个能进行稀疏矩阵基本原酸的运算器。
*基本要求:以“带行逻辑链接信息”的三元组次序表示稀疏矩阵,实现两个矩阵相乘、相减和相加的运算。稀疏矩阵的输入方式采用三元组表示,而运算结构的矩阵则以一般的阵列方式列举。
*实现提示:(1)首先应输入矩阵的行数和列数,并判断给出的两个矩阵的行、列数对于所要求作的运算是否匹配。可设矩阵的行数和列数均不超过20。(2)程序可以对三元组的输入次序加以限制,例如,按行优先。注意研究教科书中的算法,以便提升估算效率。(3)在用三元组表示稀 疏矩阵时,相加或相乘所得结果矩阵应当另生成,乘积矩阵也可以用二维数组储存。18.图书管理
*问题描述:图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。
*基本要求:(1)每种书的登记内容起码包括书号、书名、作者、现存量和总库存量等五4。(2)作为演示系统,不必使用文件,全部数据可以都在显存储存。但是因为上述四项基本业务活动都是通过书号(即关键字)进行的,所以要用b树对书号竭力索引,以获得高效率。(3)系统应实现的操作及功能定义如下:①采编入库:新购进一种书,经分类和确定书号后登记到图书账目中去。如果这些书在帐册中已有,则只将总库存量降低。②清除库存:某种书已无保留价值,将它从图书账目中注销。③某种书的现存量小于零,则借出一本,登记借阅者的图书证号和归还时限。④归还:注销对借阅者的登记,改变该书的现存量。⑤显示:以腹面表的方式显示b树。这个操作是为了调试和维护的目的而设置的。下列b树的复印格式如下所示:
19、文章编辑
*问题描述:输入一页文字,程序可以统计出文字、数字、空格的个数。静态储存一页文章,每行最多不超过80个字符,共n行。
*要求(1)分别统计出其中英语字母数和空格数及每篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将前面的字符前移。
*存储结构使用线性表,分别用几个子函数实现相应的功能;
*输入数据的方式和范围:可以输入小写、小写的英语字母、任何数字及标点符号。
*输出方式:(1)分行输出用户输入的各行字符;(2)分4行输出“全部字母数”、“数字个数”、“空格个数”、“文章总字数”(3)输出删掉某一字符串后的文章;
50,52 70,72
20、回文判定
[问题描述]
试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如‘序列1 & 序列2’模式的字符序列。其中序列1和序列2 中都不含字符‘&’,且序列2 是序列1的倒序列。例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。[实现提示]
首先,序列1进栈,然后序列1出栈并与序列2比较。
21、建立二叉树,层序、先序遍历(用递归或非递归的方式都可以)*问题描述:
要求才能输入树的各个结点,并才能输出用不同方式遍历的遍历序列;分别构建完善二叉树储存结构的的输入函数、输出层序遍历序列的函数、输出先序遍历序列的函数;
五、参考书目
《数据结构 c语言》 严蔚敏 清华大学出版社 《c语言程序设计》 谭浩强 清华大学出版社 《数据结构》 高教出版社
《数据结构习题》 李春保 清华大学出版社 《数据结构习题》 严蔚敏 清华大学出版社 《c语言与数据结构》 王立柱 清华大学出版社
《数据结构(c语言篇)习题与解析》李春葆 清华大学出版社
计算机软件教研室 2004年1月7日
数据结构课程实验教学大纲篇二
综合课程设计1 ——《数据结构课程设计》教学大纲
一、课程的性质、教学目的和要求
《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在把握理论知识的同时,加强上机实践。本课程设计的目的就是要达到理论与实际应用相结合,使朋友们才能依据数据对象的特点,学会数据组织的方式,能把现实世界中的实际问题在计算机内部表示下来,并培养基本的、良好的程序设计技能
二、设计要点
1、通过此次设计,要求在数据结构的逻辑特点和化学表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解。同时,在程序设计方式以及上机操作等基本技能和科学作风方面深受比较系统和严格的训练。
2、学生必须仔细通读《数据结构》课程设计(实习)要求,以中学生自学为主、指导班主任指导为辅,认真、独立地完成课程设计的任务,有问题及时主动与指导班主任沟通。
3、本次课程设计根据教学要求须要独立完成,学生要发挥自主学习的能力,充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检查自己的计划完成情况,及时地向指导班主任汇报。
4、编程语言任选。
三、设计题目
1、集合的并、交和算差运
任务:编制一个能演示执行集合的并、交和差运算的程序。要求:(1)集合的元素限定为大写字母字符 [‘a’..’z’]。(2)演示程序以用户和计算机的对话形式执行。实现提示:以数组表示集合。
选作内容:(1)集合的元素判断和子集判断运算。
(2)求集合的补集。
(3)集合的混和运算表达式求值。
(4)集合的元素类型推广到其他类型,甚至任意类型。
2、停车场管理
任务:设停车场是一个可以停放n辆车辆的细长通道,且只有一个房门可供车辆进出。汽车在停车场内按汽车抵达时间的先后次序,依次有北向南排列(大门在最南端,最先抵达的第一车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它以后步入的汽车必须先退出车场为它让路,待该辆车开出房门外,其他汽车再按原顺序步入车场,每辆停放在车场的车在它离开停车场时必须按它逗留的时间长短收取费用。试为停车场编制按上述要求进行管理的模拟程序。
要求:以栈模拟停车场,以队列模拟车场外的便道。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车车牌号码以及抵达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是汽车抵达,则输出车辆在停车场内或便道上的停车位置;若是汽车离去,则输出车辆在停车场内逗留的时间和应缴纳的费用(在便道上停车不收费)。栈以顺序存储结构实现,队列以数组结构实现。
3、哈夫曼码的编/译码系统 【问题描述】利用哈夫曼编码进行通讯可以大大提升信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行解调(复原)。对于双工信道(即可以单向传输信息的信道),每端都须要一个完整的编/解调系统。试为这样的信息收发站写一个哈夫曼码的编/解调系统。【基本要求】一个完整的系统应具有以下功能:
(1)i:初始化(initialization)。从终端读入字符集大小n,以及n个字符和n个残差,建立哈夫曼树,并将它存于文件hfmtree中。
(2)e:编码(encoding)。利用已建好的哈夫曼树(如不在显存,则从文件hfmtree中读入),对文件tobetran中的正文进行编码,然后将结果存入文件codefile中。(3)d:译码(decoding)。利用已建好的哈夫曼树将文件codefile中的代码进行解调,结果存入文件textfile中。
(4)p:打印代码文件(print)。将文件codefile以紧凑格式显示在终端上,每行50个代码。同时将此字符方式的编码文件写入文件codeprin中。
(5)t:打印哈夫曼树(tree printing)。将已在显存中的哈夫曼树以直观的方法(树或腹面表方式)显示在终端上,同时将此字符方式的哈夫曼树写入文件treeprint中。【测试数据】
(1)利用下边这道题中的数据调试程序。某系统在通信联络中只可能出现八种字符,其机率分别为0.25,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试设计哈夫曼编码。
(2)用下表给出的字符集和频率的实际统计数据构建哈夫曼树,并实现以下报文的编码和解调:“this program is my favorite”。
字符 空格 a b c d e f g h i j k l m 频度 186 64 13 22 32 103 21 15 47 57 1 5 32 20 字符 n o p q r s t u v w x y z 频度 57 63 15 1 48 51 80 23 8 18 1 16 1
【实现提示】
(1)编码结果以文本形式储存在文件codefile中。
(2)用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“q”,表示退出运行quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户选择了“q”为止。
(3)在程序的一次执行过程中,第一次执行i,d或e命令以后,哈夫曼树早已在显存了,不必再读入。每次执行中不一定执行i命令,因为文件hfmtree可能已经建好。
4、校园导游咨询
任务:设计一个校园导游程序,为来访的顾客提供各类信息查询服务。
要求:
(1)设计中学的校园平面图,所含景点不多于10个,以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径宽度等相关信息。
(2)为来访顾客提供图中任意景点相关信息的查询。
(3)为来访顾客提供景点的问路查询,即已知一个景点,查询到某景点之间的一条最短路径及厚度。
5、散列表的设计与实现
任务:设计散列表实现电话号码查找系统。要求:
(1)设每位记录有下述数据项:用户名、电话号码、地址;
2(2)从按键输入各记录,以用户名(汉语拼音方式)为关键字构建散列表;(3)采用一定的方式解决冲突;
(4)查找并显示给定电话号码的记录; 选作内容:
(1)系统功能的构建;
(2)设计不同的散列函数,比较冲突率;
(3)在散列函数确定的前提下,尝试各类不同类型处理冲突的方式,考察平均查找厚度的变化。
6、文章编辑
功能:输入一页文字,程序可以统计出文字、数字、空格的个数。静态储存一页文章,每行最多不超过80个字符,共n行; 要求:(1)分别统计出其中法文字母数和空格数及每篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将前面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;
输入数据的方式和范围:可以输入小写、小写的英语字母、任何数字及标点符号。输出方式:
(1)分行输出用户输入的各行字符;
(2)分4行输出“全部字母数”、“数字个数”、“空格个数”、“文章总字数”(3)输出删掉某一字符串后的文章;
四、参考书目
《数据结构 c语言》 严蔚敏 清华大学出版社 《c语言程序设计》 谭浩强 清华大学出版社 《数据结构》 高教出版社
《数据结构习题》 李春保 清华大学出版社 《数据结构习题》 严蔚敏 清华大学出版社
《c语言与数据结构》 王立柱 清华大学出版社
《数据结构(c语言篇)习题与解析》李春葆 清华大学出版社
数据结构课程实验教学大纲篇三
《数据结构课程设计》课程设计教学大纲
course design of data structure
课程代码:
适用专业:信息估算、信息安全 总学时数:1周编撰年月:2004年7月
执 笔:刘科峰、李小英、高学军
课程性质:设计(论文)/必修 开课学期:5 总学分数:1 修订年月:2007年7月
一、课程设计的性质和目的
《数据结构课程设计》是本大学专科专业的集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合应用练习。其目的就是要达到理论与实际相结合,使中学生才能依据数据对象的特点,学会数据组织的方式,能把现实世界中的实际问题在计算机内部表示下来,并培养良好的程序设计技能。
二、课程设计内容及学时分配
写出不多于3000字的课程设计说明书。说明书中不仅在封面中应有题目、班级、姓名、学号和课程设计日期以外,其正文通常有如下几个方面的内容:
1.需求剖析 2.概要设计 3.详尽设计 4.调试剖析 5.测试结果 6.附录或参考资料
三、课程设计教学基本要求
四、课程设计选题
根据教材《数据结构题集(c语言版)》(严蔚敏、吴伟民主编)选择课程设计题目,或选择下述与实际应用紧密结合的较综合性的题目,要求通过设计,在数据结构的逻辑特点和数学表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。
1. 运动会分数统计系统; 2. 停车场管理系统; 3. 民航卖票系统; 4. 有理数四则运算器; 5. 文本格式化器; 6. 哈夫曼编/译码器; 7. 教学计划编制; 8. 计算机辅助考评系统;
9. 学籍管理系统; 10. 图书管理系统。
五、本课程与其它课程的联系与分工
本课程是《数据结构》的配套课程,学完《数据结构》后进行的综合性课程设计。
六、成绩评定
由指导班主任按照中学生完成任务的情况、课程设计说明书的质量和课程设计过程中的工作心态等综合打分。课程设计结束时,要求中学生写出课程设计报告,可运行的软件系统(包括源程序)。课程设计成绩:上机情况(20%)包括缺勤情况、调试表现。设计报告占40%,设计作品占40%。
成绩评定推行优、良、中、及格和不及格五个等级。优秀者人数通常不得超过总人数的20%。不及格者不能得到相应的学分,需重新做课程设计,经指导班主任考评及格后,方可取得相应学分。有关的考查相关材料(文字材料以及c盘或光碟)统一妥善保管。
七、建议教材与教学参考书
[1] 《数据结构》,严蔚敏 吴伟民 编著,清华大学出版社
[2] 《数据结构题集》严蔚敏 吴伟民 米宁 编著,清华大学出版社
数据结构课程实验教学大纲篇四
《数据结构课程设计》教学大纲
data structure course design
一、课程的性质、教学目的和要求
《数据结构》是计算机软件的一门基础课程,计算机科学各领域及有关的应用软件都要用到各类类型的数据结构。学好数据结构对把握实际编程能力是很有帮助的。为了学好《数据结构》,必须编撰一些在特定数据结构上的算法,通过上机调试,才能更好地把握各类数据结构及其特性,同时提升解决计算机应用实际问题的能力。
二、设计要点
1.设计和调试过程要规范化。① 需求分析
将题目中要求的功能进行表述剖析,并且设计解决此问题的数据储存结构,(有些题目早已指定了数据储存的,按照指定的设计),设计或表述解决此问题的算法,描述算法建议使用流程图,进行算法剖析指明关键词句的时间复杂度。
给出实现功能的一组或多组测试数据,程序调试后,将根据此测试数据进行测试的结果列下来。
对有些题目提出算法改进方案,比较不同算法的优缺点。
如果程序不能正常运行,写出实现此算法中遇见的问题,和改进技巧。②源程序(可以是一组源程序,即详尽设计部份)
源程序要根据写程序的规则来编撰。要结构清晰,重点函数的重点变量,重点功能部份要加上清晰的程序注释。
程序才能运行,要有基本的容错功能。尽量避开出现操作错误时出现死循环。
2.课程设计实习报告的书写格式
① 设计题目(任选其三)②运行环境(软、硬件环境)③算法设计的思想 ④算法的流程图 ⑤算法设计剖析 ⑥源代码 ⑦运行结果剖析 ⑧收获及感受 3.施行方法
可设3-4人一题,安排在《数据结构》课程开课学期布置题目,然后在期终两周时间内完成。
三.设计要求
学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检查自己的计划完成情况,及时的向班主任汇报。课程设计根据教学要求须要两周时间完成,两周中每晚起码要上3-4小时的机来调试c语言设计的成成,总共起码要上机调试程序30小时。为保证质量,需要每位中学生将每晚的上机调试程序的时间记录出来,作为衡量成绩的标准之一。
四.设计题目
1、运动会分数统计
*问题描述:参加运动会有n个校区,学校编号为1……n。比赛分成m个女子项目,和w个男子项目。项目编号为女子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由中学生自己设定。(mnum 2)依次输入图的各条边
3)程序所能达到的功能:能够输出这个图的一棵最小生成树
15、算术表达式求值演示
(1)问题描述:表达式求值是实现程序设计语言的基本问题之一,也是栈的应用的一个典型事例。设计一个程序,演示用算符优先法对算术表达式求值的过程。(2)基本要求:以字符序列的方式从终端上输入句型正确的、不含变量的整数表达式。利用教材中给出的算符优先关系,实现对算术四则混和运算表达式的求值,并仿造教材例3-1演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
16.稀疏矩阵运算器
*问题描述:稀疏矩阵是指这些多数元素为0的矩阵。利用“稀疏”特点进行储存和估算可以大大节约储存空间,提高估算效率。实现一个能进行稀疏矩阵基本原酸的运算器。
*基本要求:以“带行逻辑链接信息”的三元组次序表示稀疏矩阵,实现两个矩阵相乘、相减和相加的运算。稀疏矩阵的输入方式采用三元组表示,而运算结构的矩阵则以一般的阵列方式列举。
*实现提示:(1)首先应输入矩阵的行数和列数,并判断给出的两个矩阵的行、列数对于所要求作的运算是否匹配。可设矩阵的行数和列数均不超过20。(2)程序可以对三元组的输入次序加以限制,例如,按行优先。注意研究教科书中的算法,以便提升估算效率。(3)在用三元组表示稀疏矩阵时,相加或相乘所得结果矩阵应当另生成,乘积矩阵也可以用二维数组储存。
四、时间安排
《数据结构课程设计》安排在第三学期进行,时间2周(17-18周)。
五、组织管理
1.由院、系委派经验丰富的专业班主任兼任指导班主任。
2.课程设计推行指导班主任负责制,由指导班主任全面负责课程设计的指导与管理工作。
六、成绩考评与评定
学生课程设计结束后写出总结报告,对设计的内容和疗效进行总结,按照中学生在设计期间的表现,指导老师对每个中学生写出评语和鉴别,系课程设计领导小组组织答辩,最后确定每个中学生课程设计成绩,课程设计成绩分为优、良、中、及格和不及格五个等级。
课程设计成绩为平常表现30%、设计报告50%、答辩20%。评分标准:
① 优秀:目的明晰,态度端正,模范违背中学的各项纪律。工作认真,积极 主动,吃苦耐劳,能出众的完成设计任务。撰写了高质量的总结报告。答辩确切流利。
② 良好:目的明晰,态度端正,能违背中学的各项纪律,工作比较积极主动。能较好地完成设计任务,成绩较突出,表现良好;撰写了质量比较高的实习报告。答辩较确切流利。
③ 及格:目的明晰,态度基本端正,能违背中学纪律,在督促下能举办工作 并完成一定的设计任务,无大的违纪违法现象;撰写了实习报告。通过了答辩。
④ 不及格:实习心态端正,不能遵循实习单位的纪律,不服从领导,自由散漫,工作悲观被动,不能完成实习任务,实习期间有渎职、旷工、打架、酗酒等大的过错。或无实习报告,没有通过答辩。
2.成绩评定
依据上述考评内容,最后采用优(>90分)、良(80~89分)、中(70~79分)及格(60~69分)、不及格(
七、主要参考资料
《数据结构 c语言》 严蔚敏 清华大学出版社 2006.2 《c语言程序设计》 谭浩强 清华大学出版社 2010.8 《数据结构习题》 李春保 清华大学出版社 2006.4 《数据结构习题》 严蔚敏 清华大学出版社 2006.2 《c语言与数据结构》 王立柱 清华大学出版社 2010.6 《数据结构(c语言篇)习题与解析》李春葆 清华大学出版社2006.4