2014数据结构—实验指导书——学生
- 格式:pdf
- 大小:394.73 KB
- 文档页数:34
《数据结构》实验指导书实验一、顺序表实验目的:熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作。
实验要求:了解并熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作的实现和应用。
实验内容:编写程序实现下列的要求:(1) 设数据元素为整数,实现这样的线性表的顺序存储表示。
(2) 键盘输入10个数据元素,利用顺序表的基本操作,建立该表。
(3) 利用顺序表的基本操作,找出表中的最大的和最小的数据元素(用于比较的数据元素为整数)。
(4) * 若数据元素为学生成绩(含姓名、成绩等字段),重新编程,实现上面的要求。
要求尽可能少地修改前面的程序来得到新程序。
(这里用于比较的字段为分数)练习及思考题:(1)顺序表的操作上有什么特点?(2)不固定数据元素的个数,而通过特殊数据来标记输入数据的结束,实现这样的输入操作。
实验二、链表实验目的:熟悉链式表的逻辑特性、存储表示方法的特点和链式表的基本操作。
实验要求:了解并熟悉链式表的逻辑特性、存储表示方法和链式表的基本操作的实现和应用。
实验内容:编写程序实现下列的要求:(1) 设学生成绩表中的数据元素为学生成绩(含姓名、成绩字段),实现这样的线性表的链式存储表示。
(2) 键盘输入若干个数据元素(用特殊数据来标记输入数据的结束),利用链表的基本操作(前插或后插算法),建立学生成绩单链表。
(3) 键盘输入关键字值x,打印出表中所有关键字值<=x的结点数据。
(用于比较的关键字字段为分数)。
(4) 输入关键字值x,删除表中所有关键字值<=x的结点。
(用于比较的关键字字段为分数)。
练习及思考题:(1)不同类型的数据元素所对应的链式表在类型定义和操作实现上有什么异同?(2)有头结点的链式表,有什么特点?实验三、栈的应用实验目的:熟悉栈的逻辑特性、存储表示方法和栈的基本操作。
实验要求:了解并熟悉栈的逻辑特性、顺序和链式存储表示方法和栈的基本操作的实现和应用。
实验内容:(1) 判断一个表达式中的括号(仅有一种括号,小、中或大括号)是否配对。
数据结构实验指导书信息科学与工程学院余腊生2014年1月目录前言 (1)实验一一元稀疏多项式的计算 (5)实验二长整数四则运算 (21)实验三停车场管理 (43)实验四算术表达式求值 (62)实验五文学研究助手实验指导书 (74)实验六多维数组 (97)实验七哈夫曼编/译码器实验指导书 (122)实验八最短路径实验指导书 (141)实验九 B-树及图书管理实验指导书 (153)实验十内部排序算法比较实验指导书 (187)前言数据结构是软件开发的基础。
数据结构课程是软件工程、计算机科学与技术、网络工程、信息安全等专业的必修技术基础课程。
该课程是在学生学习高级语言程序设计课程基础上,使学生掌握各种常用数据结构的逻辑表示、存储表示、处理方法及应用算法设计,学会常用数据分类和数据查找的技术,对所设计的算法会做定量或定性的分析比较,培养学生的算法设计与分析的能力。
通过该课程的学习,使学生学会分析数据对象特性,选择合适的数据结构、存贮结构及相应的基本处理算法;初步掌握算法的时间空间复杂度分析技巧。
既为学生学习后继课程打好基础,也为将来软件开发提供理论指导。
数据结构具有很强的实践性,只有通过编程上机实验,才能真正领会数据结构的真正内涵,并灵活运用数据结构的基本知识提高自己的软件开发能力。
本数据结构实验选择了具有一定难度的实验项目10个,涉及到线性表、栈、队列、字符串、数据、二叉树、图、数据查找、数据排序等全部教学内容。
学生不一定完成全部实验内容,根据课程的学分不同,可以选择不同数目的实验。
鼓励学生多做实验,如果学生所做实验数目超过规定数据,可以加分。
本实验是以标准C语言为背景,也可以使用C++语言进行编程实现。
为了使学生不仅掌握数据结构的一般原理,而且掌握具有一定实用性的程序的一般结构,实验指导书中给出了程序的总体框架和部分源程序代码,以及程序运行控制和交互式操作的基本方式。
通过程序总体框架,让学生学会如何组织程序。
《数据结构与算法》课程设计指导书一.目的通过本课程设计,使同学更加系统地理解和掌握数据结构的基本概念;能自如地根据实际要求,设计相应的数据结构,并运用C或C++语言实现所设计的算法,能够利用所学的基本知识和技能,分析和解决简单的程序设计问题,为后续其它专业课程的学习和应用打下良好基础。
二.题目根据指导教师的具体要求,从下面题目中选择1个来完成1.学生成绩管理系统2.简易客房管理系统3.人事档案管理系统4.进销存货物管理系统5.图书管理系统6.运动会分数统计7.民航订票系统8.校园导游咨询9.大数相乘问题10.长整数的加减法11.表达式的求值12.日历系统13.钱币的转换14.二叉树的应用——哈夫曼树15.银行排队系统模拟16.其他题目(需老师同意)注意,在实现相关管理系统题目时,需要设计良好的数据结构,代码编写时不允许运用现有的数据库管理系统,具体功能应通过对文件的读写操作实现。
三.任务完成形式1.完整的软件系统最终必须向指导老师提交完整的程序源代码(.c和.cpp以及.h为后缀的文件)、数据文件以及使用说明文件等。
源代码文件要特别注意编程规范、代码风格,关键代码需有合理的注释,不含任何无用代码;数据文件内要求有一定数量的“真实”数据(如对于记录文件,需要有5条以上记录);使用说明文件的第一行,需要给出设计者的学号、姓名,后面为其它说明。
2.课程设计报告(详细要求请参考附录二)课程设计报告总体上主要包括以下几个部分:1)封面2)目录3)课程设计报告正文4)使用说明5)参考文献四.总体要求1.每道题目的程序代码总量不少于600行(其中不包括自动生成代码),有合理注释。
2.课程设计报告正文字数不少于8000字,概念清楚、叙述正确、内容完整、书写规范。
3.独立完成课程设计,不得抄袭他人。
4.功能正确、有一定实用性。
5.尽可能大量使用各种C或者C++语言程序设计技术,尤其在以下几个方面:指针及其运算、结构、指针数组、数组指针、字符数组与字符串、内存空间动态申请与释放、文件访问与操作、合理的常量与全局变量及函数接口变量定义、数据输入与数据格式检查、数据类型转换、错误处理、工程设计技术(整个系统由一个工程文件、若干个程序文件、若干头文件、甚至库文件等组成)。
数据结构⼤型实验任务书-2014年(第三稿)[⼤型实验基本要求]1.原则上可以1-3位同学组成实验⼩组,进⾏分⼯合作,但必需保证每位组员都充分参与实验过程,每位组员应对实验程序的结构、算法、主要技术完全掌握,⽅可参加实验验收。
但⼀个⼩组内最终只能⼀个⼈得到优秀成绩。
2.每组可参考下⾯⼤型实验题⽬和要求,选择⼀道实验题⽬,共同设计开发。
3.⼤型实验时间从第8周开始⾄16周,要求在考试之前全部验收结束。
原则上,申请⼤型实验验收后,若实验没有达到规定的要求,不可再次申请验收,故请⼤家务必确认程序正确(程序代码和运⾏结果)后,再申请验收。
[报告规范]实习报告的开头应该给出题⽬、班级、姓名、学号、和完成⽇期,如果是多⼈完成的,必须写明所有同组⼈员的班级、姓名和学号,并标明谁是主要负责⼈,其它为参与者。
实验报告要求有以下五个内容:1.实验内容分析:明确实验题⽬⽬的,设计实验的基本数据结构、类、以及程序的基本流程,程序流程要求以程序流程图明确表⽰,类及类间关系需明确图⽰,并给出各函数之间的调⽤关系。
可以适当粘贴关键代码进⾏说明;2.实验验证分析:(1)输⼊的形式和输⼊值的范围;(2)输出的形式;(3)程序所能达到的功能;(4)测试数据:包括正确的输⼊及其输出结果和含有错误的输⼊及其输出结果。
3.调试分析(1)讨论分析调试过程中的主要技术问题以及具体的解决⽅法(⾄少3个);(2)技术难点分析(⾄少3个);(3)印象最深刻的3个调试错误,及修正⽅法;4.测试结果:(1)展⽰程序的运⾏结果,包括输⼊和输出,分析数据的正确性;(2)应⽤边界数据、或极端数据测试系统,分析结果的正确性。
5.附录:附上源代码,并标明源代码的所属⽂件,并且源代码必须有注释。
[提交内容]1.电⼦压缩包:包括实验报告电⼦稿和所有源代码⽂件(包括.h⽂件和.cpp⽂件)。
2.压缩⽂件名为:“学号+姓名”;如果是多⼈合作的,则压缩⽂件名为:“负责⼈学号+负责⼈姓名+参与者1学号+参与者1姓名+参与者2学号+参与者2姓名”。
《数据结构》实验教学指导书数据结构是计算机课程的一门重要的基础课,它的教学要求大致有三个重要方面:其一就是让学生学会分析研究计算机加工的数据对象的特性,以便为数据选择适当的物理结构和逻辑结构;其二,根据结构,选择适当的算法,并初步掌握算法的时间分析和空间分析;其三,学习复杂的程序设计。
基于以上的三点要求,在整本书中贯穿这样的中心思想:让读者通过数据结构的实验课,理论结合实践,达到这三点要求。
读者在使用这本书时,要以这三点要求为出发点,力求理解结构、掌握算法、读懂程序。
本书每个实验,都给出了明确的实验目的、简明的实验原理,限于篇幅,没有给出详细的说明,事实上也没有必要。
因为这些读者可以从课堂和书本上得到。
所以读者应该详细的读懂书上的相关部分,然后依据本书认真实验。
考虑到读者的水平的差异,本书给出了参考程序,所有的参考程序都已在TURBO C2.0上通过编译,结果正确,可以参考。
但是在上机时,应当注意避免输入参考程序了事,应当事先编写自己的程序,上机调试,参考程序只是用做参考。
另外,有些参考程序也不是最佳的,应对之进行改进处理。
实验时,还应多多考虑怎样将每一个实验应用到实际当中去,举一反三,可以不必拘泥于某一个实验,要前后贯通,注意对基本的数据结构的理解和普遍的算法的研究。
目录实验一熟悉C语言 (5)实验二线性表 (9)实验三栈 (14)实验四串 (17)实验五数组和广义表 (20)实验六树的操作(二叉树及其先序遍历) (24)实验七图的操作(邻接表的建立) (28)实验八排序 (33)数据结构课程名称:数据结构英文名称:Data Structures设置形式:非独立设课课程模块:专业核心课实验课性质:专业实验课程编号:501816课程负责人:邱秀伟大纲主撰人:邱秀伟大纲审核人:李焕勤一、学时、学分课程总学48实验学时:16课程学分:3时:二、适用专业及年级教育技术学三、课程目标与基本要求本课程学习的目的是使学生学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步了解对算法的时间分析和空间分析技术。
HUNAN UNIVERSITY 课程实习报告题目:无向图中求两点间的所有简单路径学生姓名孙欣学生学号201208010120专业班级计算机科学与技术一班指导老师李晓鸿完成日期2014.5.15一、需求分析1.本程序要求用无向图表示高速公路网,其中顶点表示城市,边表示城市之间的高速公路。
试设计一个找路程序,获取两个城市之间的所有简单路径。
2.输入参数:结点总数,结点的城市编号(4位长的数字,例如电话区号,长沙是0731),连接城市的高速公路(用高速公路连接的两个城市编号标记)。
3.输入要求取所有简单路径的两个城市编号。
4.将所有路径(有城市编号组成)输出到用户指定的文件中。
5.测试数据二、概要设计抽象数据类型为实现上述程序的功能,应以无向图存储用户的输入,用基于深度优先搜索的方法找出简单路径。
ADT Graph{数据对象:Graph = (V , R )数据关系:VR={<v,w>| v,w∈V 且 P(v,w)}<v,w>表示从 v 到 w 的一条弧,并称 v 为弧头,w 为弧尾。
谓词 P(v,w) 定义了弧 <v,w>的意义或信息。
基本操作:class Graph { //图的定义类 public:int GetVexNum() //获得图中顶点的个数int Locate_Vex(string v) //获得顶点在图中的位置void DFS_Traverse() //深度优先搜索图}ADT Graph;算法的基本思想用邻接矩阵存储用户输入的城市编号和城市间是否有高速公路,然后输入两个城市。
创建一个用于记录路径的线性表,路径长度为0。
以其中一个顶点为起点,访问该顶点,将该顶点加入路径,访问下一个未被访问的顶点,将其加入路径,并将路径长度加1。
若该顶点为终点,将该路径输出,然后从路径中删除该顶点,并将路径长度减1,访问下一个未被访问的顶点。
若不为终点,则访问下一个未被访问的顶点,直到路径长度不小于顶点个数。
数据结构实验指导书一、实验目的数据结构是计算机科学中的重要基础课程,通过实验,旨在帮助学生更好地理解和掌握数据结构的基本概念、原理和算法,提高学生的编程能力和问题解决能力。
具体而言,实验的目的包括:1、加深对常见数据结构(如数组、链表、栈、队列、树、图等)的理解,掌握其特点和操作方法。
2、培养学生运用数据结构解决实际问题的能力,提高算法设计和程序实现的能力。
3、增强学生的逻辑思维能力和调试程序的能力,培养学生的创新意识和团队合作精神。
二、实验环境1、操作系统:Windows 或 Linux 操作系统。
2、编程语言:C、C++、Java 等编程语言中的一种。
3、开发工具:如 Visual Studio、Eclipse、Code::Blocks 等集成开发环境(IDE)。
三、实验要求1、实验前,学生应认真预习实验内容,熟悉相关的数据结构和算法,编写好实验程序的代码框架。
2、实验过程中,学生应独立思考,认真调试程序,及时记录实验过程中出现的问题及解决方法。
3、实验完成后,学生应撰写实验报告,包括实验目的、实验内容、实验步骤、实验结果、问题分析与解决等。
四、实验内容(一)线性表1、顺序表的实现与操作实现顺序表的创建、插入、删除、查找等基本操作。
分析顺序表在不同操作下的时间复杂度。
2、链表的实现与操作实现单链表、双向链表的创建、插入、删除、查找等基本操作。
比较单链表和双向链表在操作上的优缺点。
(二)栈和队列1、栈的实现与应用实现顺序栈和链式栈。
利用栈解决表达式求值、括号匹配等问题。
2、队列的实现与应用实现顺序队列和链式队列。
利用队列解决排队问题、广度优先搜索等问题。
(三)树1、二叉树的实现与遍历实现二叉树的创建、插入、删除操作。
实现二叉树的前序、中序、后序遍历算法,并分析其时间复杂度。
2、二叉搜索树的实现与操作实现二叉搜索树的创建、插入、删除、查找操作。
分析二叉搜索树的性能。
(四)图1、图的存储结构实现邻接矩阵和邻接表两种图的存储结构。
《数据结构》课程实验指导《数据结构》实验教学大纲课程代码:0806523006 开课学期:3 开课专业:信息管理与信息系统总学时/实验学时:64/16 总学分/实验学分:3.5/0.5一、课程简介数据结构是计算机各专业的重要技术基础课。
在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。
数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。
通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。
另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。
二、实验的地位、作用和目的数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。
另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。
三、实验方式与基本要求实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。
具体实验要求如下:1.问题分析充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,以及基本数据特性、数据间联系等等。
2.数据结构设计针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同算法实现一起考虑),确定主要的数据结构和全程变量。
对引入的每种数据结构和全程变量要详细说明其功用、初值和操作的特点。
《数据结构》实验指导书第一部分前言一、实验的目的《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。
本课程的另一重要教学目的是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,要做到这一点,上机实习是必须的。
数据结构实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,实验课题中的问题比平时的习题复杂得多,也更接近实际。
实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,训练学生实际动手进行程序设计和调试程序的能力,加深对数据结构相关概念和算法的理解。
通过完成本实验课程的实验,学生应学会并掌握本课程的基本和重点知识,深刻理解逻辑结构、物理结构和算法设计之间的关系,初步学会算法分析的方法,并能在一定范围内运用所掌握的分析方法进行算法分析,培养软件工作所需要的动手能力和作为一个软件工作者所应具备的科学工作方法和作风。
二、实验前的准备工作1.每个学生需配备一台计算机,操作系统需Windows2000/XP以上版本,软件需Visual C++6.0以上版本。
2.实验前要求学生按实验要求编写好相关实验程序,准备上机调试运行。
三、实验的步骤(一)建立一个文件夹,如“数据结构”,用来存放自己的所有实验程序,在该文件夹中建立子目录用来存放每个项目(一个子目录一个项目),如“顺序表”,项目中需要的所有文件都存在该文件夹中。
(二)新建一个项目文件1.双击Visual C++ 6.0快捷图标,进入Visual C++ 6.0集成开发环境;或者点击“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”进入Visual C++ 6.0集成开发环境。
2.单击“File”菜单,选择“New”命令3.创建一个项目文件并保存在项目所在文件夹中;3. 创建源程序文件并保存在项目所在文件夹中;4.输入源程序;5.单击“保存”按钮保存源程序。
《数据结构》实验指导书实验一线性表【实验目的】1、掌握用Turbo c上机调试线性表的基本方法;2、掌握线性表的基本操作,插入、删除、查找以及线性表合并等运算在顺序存储结构和链式存储结构上的运算;3、运用线性表解决线性结构问题。
【实验学时】4 学时【实验类型】设计型【实验内容】1、顺序表的插入、删除操作的实现;2、单链表的插入、删除操作的实现;3、两个线性表合并算法的实现。
(选做)【实验原理】1、当我们在线性表的顺序存储结构上的第i个位置上插入一个元素时,必须先将线性表中第i个元素之后的所有元素依次后移一个位置,以便腾出一个位置,再把新元素插入到该位置。
若是欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置;2、当我们在线性表的链式存储结构上的第i个位置上插入一个元素时,只需先确定第i个元素前一个元素位置,然后修改相应指针将新元素插入即可。
若是欲删除第i个元素时,也必须先确定第i个元素前一个元素位置,然后修改相应指针将该元素删除即可;3、详细原理请参考教材。
【实验步骤】一、用C语言编程实现建立一个顺序表,并在此表中插入一个元素和删除一个元素1、通过键盘读取元素建立线性表;2、指定一个元素,在此元素之前插入一个新元素;3、指定一个元素,删除此元素。
二、用C语言编程实现建立一个单链表,并在此表中插入一个元素和删除一个元素1、通过键盘读取元素建立单链表;2、指定一个元素,在此元素之前插入一个新元素;3、指定一个元素,删除此元素。
三、用C语言编程实现两个按递增顺序排列线性表的合并1、编程实现合并按递增顺序排列的两个顺序表算法;2、编程实现合并按递增顺序排列的两个单链表算法。
【思考问题】结合实验过程,回答下列问题:1、何时采用顺序表处理线性结构的问题为最佳选择;2、何时采用链表处理线性结构的问题为最佳选择。
【实验报告要求】1、根据对线性表的理解,如何创建顺序表和单链表;2、实现顺序表插入和删除操作的程序设计思路;3、实现链表插入和删除操作的程序设计思路;4、实现两表合并操作的程序设计思路;5、调试程序过程中遇到的问题及解决方案;6、本次实验的结论与体会。