《数据结构编程实验》实验操作题

数据结构与算法分析 实验报告实验题目: 学生姓名: 学 号:二叉树的构建与操作 陈策9 赵 翔 15 周周五下午任课教师: 实验时间: 一、实验目的和要求(1)掌握采用指针存储二叉树的原理,能使用类 BinNode 及其派生 类 BinN
odePtr 完成二叉树的构建。 (2)掌握对二叉树进行周游等操作的算法原理,通过调用对应的函 数,对已构建好的二叉树实施这些操作。二、实验内容(1)实现如下二叉树的构建(也可自行构建任意二叉树) 。(2)实现如上二叉树的周游(前序、中序或后序之一均可) 、求其 高度、统计全部结点个数、统计度为 1 的结点个数。三、实验过程#include &iostream& #include &queue& #include &stack& #include &string& template &class T& class btrnode2 { public: T // 结点的数据域 btrnode&T&* // 结点的左孩子结点 btrnode&T&* // 结点的右孩子节点 btrnode(){ lchild = NULL; rchild = NULL; } //默认构造函数 btrnode(T ele) // 给定数值域的值得构造函数 { element = lchild = NULL; rchild = NULL; } }; //二叉树的抽象数据类型 template &class T& class btr { private: btrnode&T&* public: btr(){ count = 0; } //默认构造函数 btrnode&T&* pib(string preod, string inod); //前序中序构造二叉树的算法 int num1(btrnode&T&* root); //求度为 1 的结点的个数 int btrhigh(btrnode&T&* root); //求树的的高度 int btrwidth(btrnode&T&* root); //求树的宽度 void preorder(btrnode&T&* root); void visit(btrnode&T&* cur); }; //先序、中序构造二叉树递归算法 template &class T& btrnode&T&* btr&T&::pib(string preod, string inod)// 是二 叉树结点个数 { string p, q, m, int i = 0; btrnode&char&* tmp = new btrnode&char&; //????????为什么直接构造 无法赋值成功????????? tmp-&element = preod[0]; for (; inod[i] != preod[0]; i++); if (preod == && || inod == &&)3 return NULL; p = preod.substr(1, i); q = inod.substr(0, i); m = preod.substr(i + 1); n = inod.substr(i + 1); tmp-&lchild = pib(p, q); tmp-&rchild = pib(m, n); } //求度为 1 的结点的个数 template &class T& int btr&T&::num1(btrnode&T&* root) { int n, m, sum = 0; btrnode&T&* pointer = if (pointer) { if ((pointer-&lchild == NULL && pointer-&rchild != NULL) || (pointer-&rchild == NULL && pointer-&lchild != NULL)) sum++; n = num1(pointer-&lchild); sum += m = num1(pointer-&rchild); sum += } } //求树的的高度 template &class T& int btr&T&::btrhigh(btrnode&T&* root) { btrnode&T&* pointer = int m, n, if (pointer == NULL) return 0; m = btrhigh(pointer-&lchild); n = btrhigh(pointer-&rchild); max = 1 + (m & n ? m : n); } //前序遍历 template &class T& void btr&T&::preorder(btrnode&T&* root) {4 if (root != NULL) { visit(root); preorder(root-&lchild); preorder(root-&rchild); }// 处理根结点} template &class T& void btr&T&::visit(btrnode&T&* cur) { cout && cur-&element && & &; } int main() { string a, btr&char& btrnode&char&* root,* cout && &分别输入先序列、中序列:&; cin && cin && root = c.pib(a, b); n = c.num1(root); cout && & 统计度为 1 的结点个数为 & && n && n = c.btrhigh(root); cout && &树的高度为: & && n && c.preorder(root); cout && return 0;}四、实验总结在此次实验过程中,这一个程序相对于上一节实验课的题目来说 难度加大很多,首先要实现构建,然后再继续编写。运行时要注意正 确读出二叉树,程序才能正确运行。 实验结果的截图如下图所示。5 6
数据结构实验报告-二叉树的构建与操作――陈策――9―汇集和整理大量word文档,专业文献,应用文书,考试资料,教学教材,办公文档,教程攻略,文档搜索下载下载,拥有海量中文文档库,关注高价值的实用信息,我们一直在努力,争取提供更多下载资源。《数据结构》实验指导书(C语言版2014上半年改)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
《数据结构》实验指导书(C语言版2014上半年改)
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢《数据结构》作业习题_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
喜欢此文档的还喜欢
《数据结构》作业习题
《​数​据​结​构​》​作​业​习​题
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:18.77KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢您是第位访问者,欢迎您!
  《数据结构》是计算机科学中一门综合性的专业基础课。主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。通过本课程的学习,使学生深入透彻地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,为学习操作系统、编译原理和数据库等课程奠定基础。
  山东省高校首届《数据结构》课程建设研讨会在我校胜利召开  &&75《数据结构》实验指导书(Java语言版)
上亿文档资料,等你来发现
75《数据结构》实验指导书(Java语言版)
《数据结构》课程实验指导;《数据结构》实验教学大纲;课程代码:开课学期:3开课专;一、课程简介;数据结构是计算机各专业的重要技术基础课;二、实验的地位、作用和目的;数据结构是一门实践性较强的基础课程,本课程实验主;三、实验方式与基本要求;实验方式是上机编写完成实验项目指定功能的程序,并;1.问题分析;充分地分析和理解问题本身,弄清要求,包
《数据结构》课程实验指导 《数据结构》实验教学大纲 课程代码:
开课学期:3
开课专业:信息管理与信息系统 总学时/实验学时:64/16
总学分/实验学分:3.5/0.5 一、课程简介数据结构是计算机各专业的重要技术基础课。在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。二、实验的地位、作用和目的数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。 三、实验方式与基本要求实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。具体实验要求如下:1. 问题分析充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,以及基本数据特性、数据间联系等等。2. 数据结构设计针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同算法实现一起考虑),确定主要的数据结构和全程变量。对引入的每种数据结构和全程变量要详细说明其功用、初值和操作的特点。3. 算法设计算法设计分概要和详细设计。概要设计着重解决程序的类的设计问题,这包括考虑如何把被开发的问题程序分解成若干个类,并决定类与类之间的关系。详细设计则要决定每个类内部的具体算法,包括输入、处理和输出。4. 测试用例设计准备典型测试数据和测试方案。测试数据要有代表性、敏感性。测试方案包括单元测试和单元集成测试。5. 上机调试对程序进行编译,纠正程序中可能出现的语法错误。调试前,先运行一遍程序看看究竟将会发生什么。如果情况很糟,则根据事先设计的测试方案并结合现场情况进行错误跟踪,包括打印执行路径或输出中间变量值等手段。6. 程序性能分析在运行结果正确的前提下再分析程序中主要算法是否具有较好的时间复杂度和空间复杂度。如果没有,则通过改变数据结构或操作方法使编写的程序性能达到最佳。7. 实验总结每个实验完成后要认真书写实验报告,对程序运行的结构,要认真分析,总结每次实验项目的体会与收获。四、报告与考核每个实验都要求学生根据上机内容写出实验报告,报告要求包括以下七个方面的内容: 1.实验目的; 2.实验内容; 3.实验要求; 4.算法设计; 5.详细程序清单; 6.程序运行结果;7.实验心得体会。 考核方式:每个实验项目根据以下两个方面进行考核:1.指导教师随堂抽查学生的实验过程(包括实验预习、实验出勤、实验结果的测试),并根据抽查结果评定学生成绩,此成绩占此实验总成绩的70%;2.学生编写课程实验报告,每位学生按照实验报告的内容和要求编写详细的实验报告上交给指导老师,由指导老师根据每位学生的完成情况评定成绩,此成绩占实验总成绩的30%。五、设备及器材材料配置硬件:奔腾以上PC机软件:Netbeans 6.5以上或Eclipse、MyEclipse等编程环境六、实验指导书及主要参考书[1]刘小晶.数据结构实验指导书(Java语言版)[2] Robert Lafore著,计晓云等译. Java数据结构和算法(第二版)[M]. 北京:中国电力出版社,2004.[3] Sartaj Sahni著,孔芳,高伟译. 数据结构、算法与应用(Java语言描述)[M]. 北京:中国水利水电出版社,2007.[4] 叶核亚. 数据结构(Java版)[M]. 北京:电子工业出版社,2004.[5] 邓俊辉. 数据结构与算法(Java语言描述)[M]. 北京:机械工业出版社,2006. [6] 朱战立. 数据结构- Java语言描述[M]. 北京:清华大学出版社,2005.[7] 张铭.数据结构与算法. 高教出版社.2008.6[8] 张铭.数据结构与算法--学习指导与习题解析. 高教出版社.2009 [9] 耿国华等 数据结构-C语言描述. 高教出版社.2005.7[10] 刘怀亮. 数据结构(C语言描述) .冶金出版社.2005.2[11] 刘怀亮. 数据结构(C语言描述)习题与实验指导导.冶金出版社.] 蔡子经,施伯乐.数据结构教程.上海:复旦大学出版社.1994 [13] 严蔚敏,吴伟民.数据结构(C语言版).北京:清华大学出版社.1999; [14] 严蔚敏,吴伟民.数据结构题集(C语言版).北京:清华大学出版社.1999; [15] 徐孝凯.数据结构课程实验.北京:清华大学出版社.2002;[16] 孟佳娜,胡潇琨.算法与数据结构实验与习题.北京:机械工业出版社.2004.七、实验项目与内容提要 实验B01:
顺序表的操作实验一、实验名称和性质 二、实验目的1.掌握线性表的顺序存储结构的表示和实现方法。 2.掌握顺序表基本操作的算法实现。 3.了解顺序表的应用。 三、实验内容1.建立顺序表。2.在顺序表上实现插入、删除和查找操作(验证性内容)。 3.删除有序顺序表中的重复元素(设计性内容)。4.完成一个简单学生成绩管理系统的设计(应用性设计内容)。 四、实验的软硬件环境要求硬件环境要求:PC机(单机)Netbeans 6.5以上或Eclipse、MyEclipse等编程环境下 。 使用的软件名称、版本号以及模块: 五、知识准备前期要求熟练掌握了Java语言的编程规则、方法和顺序表的基本操作算法。 六、验证性实验1.实验要求 编程实现如下功能:(1)根据输入顺序表的长度n和各个数据元素值建立一个顺序表,并输出顺序表中各元素值,观察输入的内容与输出的内容是否一致。(2)在顺序表的第i(0≤i≤n)个元素之前插入一个值为x的元素,并输出插入后的顺序表中各元素值。(3)删除顺序表中第i(0≤i≤n-1)个元素,并输出删除后的顺序表中各元素值。 (4)在顺序表中查找值为x的数据元素初次出现的位置。如果查找成功,则返回该数据元素在顺序表中的位序号;如果查找失败,则返回-1。2. 实验相关原理线性表的顺序存储结构称为顺序表,线性表的顺序存储结构在线性表Java接口的实现类中描述如下:public class SqList implements IList{private Object[] listE // 线性表存储空间 private int curL //线性表的当前长度 ??}【核心算法提示】⑴ 顺序表插入操作的基本步骤:要在当前的顺序表中的第i(0≤i≤n, n为线性表的当前长度)个数据元素之前插入一个数据元素x,首先要判断插入位置i是否合法, i的合法值范围:1≤i≤n+1,若是合法位置,就再判断顺序表是否满,如果不满,则将第i个数据元素及其之后的所有数据元素都后移一个位置,此时第i个位置已经腾空,再将待插入的数据元素x插入到该位置上,最后将线性表的当前长度值增加1,否则抛出异常。⑵ 顺序表删除操作的基本步骤:要删除当前顺序表中的第i(0≤i≤n-1)个数据元素,首先仍然要判断i的合法性,i 的合法范围是0≤i≤n-1,若是合法位置,则将第i个数据元素之后的所有数据元素都前移一个位置,最后将线性表的当前长度减1,否则抛出异常。⑶ 顺序表查找操作的基本步骤:要在当前顺序表中查找一个给定值的数据元素,则可以采用顺序查找的方法,从顺序表中第0个数据元素开始依次将数据元素值与给定值进行比较,若相等则返回该数据元素在顺序表中的位置,如果所有数据元素都与x比较但都不相等,表明值为x的数据元素在顺序表中不存在,则返回-1值。 【核心算法描述】⑴ 在当前顺序表上的插入操作算法void insert(int i, Object x) throws Exception {if (curLen == listElem.length)
// 判断顺序表是否已满
} throw new Exception(&顺序表已满&); // 抛出异常
throw new Exception(&插入位置不合法&);// 抛出异常listElem[j] = listElem[j - 1];// 插入位置及其之后的所有数据元素后移一位
if (i & 0 || i & curLen)
// i不合法
for (int j = curL j & j--)
listElem[i] =
// 表长加1⑵ 在当前顺序表上的删除操作算法void remove(int i) throws Exception {
if (i & 0 || i & curLen - 1) // i不合法throw new Exception(&删除位置不合法&);// 抛出异常
for (int j = j & curLen - 1; j++)listElem[j] = listElem[j + 1];// 被删除元素及其之后的数据元素左移一个存储位置
curLen--; // 表长减1
}⑶ 在当前顺序表是的查找操作算法int indexOf(Object x) {int j = 0;
// j指示顺序表中待比较的数据元素,其初始值指示顺序表中第0个数据元素while (j & curLen && !listElem[j].equals(x))
//依次比较j++;包含各类专业文献、应用写作文书、专业论文、各类资格考试、行业资料、高等教育、幼儿教育、小学教育、外语学习资料、生活休闲娱乐、75《数据结构》实验指导书(Java语言版)等内容。 
 《数据结构》实验指导书(C语言版)_职业规划_求职/职场_实用文档 暂无评价|0人阅读|0次下载|举报文档 《数据结构》实验指导书(C语言版)_职业规划_求职/职场_...  《数据结构》课程实验指导《数据结构》实验教学大纲 课程代码: 总学时/...五、设备及器材材料配置 硬件:奔腾以上 PC 机 软件:TURBO C、C++或 Java 六...  《数据结构》实验报告 32页 5财富值 数据结构(c++版)实验书 45页 5财富值 ...基于学校教学大 纲的安排, 在此, 建议大家选择C语言、 Java语言, 或者是VC++...  《数据结构》实验 指导书 这是一份从老师手里拷出来的实验指导书,内容很详细,...3、程序设计根据已完成的算法,用 C(C++、Java)语言进行程序设计。 4、调试和...  第1 页 《数据结构》实验指导书 专业:___班级:___组序:___ 学号:___姓名...掌握编写与运行 Java 程序的方法 4.了解 Java 语言的概貌 【实验内容】 一 ...  《数据结构》实验指导书(源... 50页 1财富值 数据结构实验报告答案 63页 免费 数据结构(C语言版)实验报告... 25页 免费 计算0901-第11组-集合的并... 8...  说明 考虑到 C 语言是数据结构的先修课程, 全书中采用 C 语言作为数据结构和算法的描 述语言。上机环境为 TURBOC2.0。 一、实验步骤: (各实验均按照以下步骤...  《数据结构》实验指导书(信管13用)_工学_高等教育_教育专区。韶关学院信息科学...直到 N/M=0 */ } // 请将以上紫色部分代码拷贝到 C 语言编程环境下,补充...  数据结构(C语言版)实验报... 25页 免费 《数据结构》实验指导书... 14页 免费《数据结构》实验指导书 ...

我要回帖

更多关于 数据结构上机实验 的文章

 

随机推荐