2023年数据结构B实验报告单链表的实现.docx
才U海本/身实验报告(2023 / 2023学年第二学期)课程名称数据结构B实验名称单链表的实现实验时间2 0 23 年 5 月 1日5指导单位计算机学院计算机科学与技术系指导教师学生姓名班级学号学院(系)通达学院 专信息管理与信息业系统Post o rder(Bt) os=Size(Bt);opr in t f (nTh e size of the tree i s : n);叩ri n t f (%dn,s);otl = Le a f (Bt);叩 r in t f (nThe le a ves of the tr e e i s: n );printf (dn,t 1 );td=Depth (B t );printf ( n T h e d e p th of the tre e is: n n );叩rin t f ( " %dn,t d );历历历点右历历y遍 富an子 s 先中后叶交中后es 1234523P1后K 4UJ4叔c .予:E H F J G B J F G D A B G F E D K C:1.先序遍历 B A D G F J B G J F H E continuec AABCKDEFGJH实验报告五、实验'结(涉及问题和解决方法、心得体会、意见与建议等)这是一门纯属于设计的科目,它需用把理论变为上机调试。刚开始学的时候的确有很 多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们一个初学者 来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。老师 会给我们需要编程的内容一些讲解,顺着老师的思绪,来完毕自己的设计,我们可以开始 运营自己的程序。这门课结束之后,我总结了学习中碰到的一些问题,最为突出的,书本上的知识与老 师的讲解都比较容易理解,但是当自己采用刚学的知识点编写程序时却感到十分棘手, 有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程 序段誉写到自己的程序中再加以必要的连接以完毕程序的编写。刚开始学的时候的确有很多地方我很不理解,每次上上机课时老师都会给我们出不 同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决 定静下心来,仔细去写程序。老师会给我们需要编程的内容一些讲解,顺着老师的思绪, 来完毕自己的设计,我们可以开始运营自己的程序,可是好多处的错误让人看的可怕, 还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次请教了老师和同学, 逐渐能自己找犯错误,并加以改正。TC里检查错误都是用英文来显示出来的,通过了这 次课程设计,现在已经可以了解很多错误在英文里的提醒,这对我来说是一个突破性的 进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。本次的程序设 计可以成功,我很开心。在这一段努力学习的过程中,我们的编程设计有了明显的提高。其实现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了 好多心血,觉得它很难,是需用花费了大量的时间编写出来的。现在真正的明白了一些代 码的应用,每个程序都有一些共同点,通用的结构,相似的格式。只要努力去学习,就会 灵活的去应用它。六、指导教师评语成批阅人日期实验报告实验名称二叉树的链接表达指导教师徐鹤实验类型设计实验学时2实验时间一、实验目的和规定1 .理解二叉树的数据结构。2 .掌握二叉链表上实现二叉树基本运算的方法。3 .学会设计基于遍历的、求解二叉树应用问题的方法。二、实验内容:实现教材中二叉树的链接表达,并基于二叉树遍历算法实现其应用。具体 如下:(一)实现教材中二叉树的链接表达,实现二叉树ADT的基本运算(先序 遍历、中序遍历、后序遍历)。(二)基于二叉树遍历算法实现其应用:计算一棵二叉树叶子节点个数。记录一棵二叉树的节点个数。(三)设计main函数,测试实验内容一的运算和实验内容二的算法。三、实验环境(实验设备)Visual C+ 6.0实验报告四、实验过程描述与结果分析#inc 1 ude <stdio. h># i n c lude <stdl i b . h>#inc 1 ude <m a 1 1 oc. h> typedef struc t bt n o de (c ha r e 1 e me n t ;st r u ct btn ode*l child, *rch i Id; BTNode;BTNode * PreCreate(BT N o de *B t )。/ /先序创建二叉树( oc h ar ch;®ch = getchar () aoif (ch='#')输入为#表达这里建立一个空二叉树。B t =NU LL;。e Ise。Bt= (BTN o de malloc(siz e of (BTNo de);。 Bt-> e 1 e ment=ch;B t ->lchi 1 d=Pr e C r eate(Bt->lch i Id);ooB t ->rchil d = PreCreat e (Bt-> r c h ild);retu r n Bt;)v o i d Pr e o r der (BTNode * Bt)叼7先序输出二叉树if(Bt)(gprintf (枇",Bt->e 1 e ment);Pre orde r (Bt >lc h ild);gPre o r d er (Bt->r c h i 1 d);)vo i d Inorde r (BTNode *B t )。/中序输出二叉树4f(B t )Inorder(B t ->1 c hil d );gprintf(% c ,Bt->eleme n t);o I n o r der (Bt->r c h i 1 d);)vo i d Post order (BTNo de *B t )3后序输出二叉树 if(B t )0Post o rde r ( B t->lchild);Posto rder (Bt->r chi Id);printf (% c , Bt->eleme n t);)i n t S i ze (BTNode *Bt)。求二叉树中的结点数(i n t s , si, s 2 ;if( ! Bt) g ” /二叉树为空,结点数为0s=0;else 0 o sl=Size(Bt >lchild);。s2 = Size ( B t >rchild);os=sl + s2+l; g/二叉树的结点数等于左右子树结点数的和在加1 (根结点) ret u rn s;in t Leaf (BTNod e *Bt)*求二叉树中叶子个数(in t 11, rl, tl;°i f (!Bt)-4/二叉树为空,叶子个数为0t 1 =0;比Ise i f(!Bt->lchi 1 d&&!Bt-> r child) /叶子满足的条件(左右 孩子均为空)。t1 = 1;els e。(。ll = Lea f (Bt->lch i 1 d);。6 r 1 =Leaf (Bt >r c h ild);g tl=l 1 + r 1;r etu r n t 1 ;)i nt D epth (BTNode*Bt) 。/求二叉树的深度(高度)(oint 1 d , rd, td;i f(! B t )。td= 0 ; else(。ld=D e p th (Bt-> 1 chi Id);r d =Depth( B t-> r c h ild);-i f (ld>= r d) 。 左右子树高度大的加1 ,即为二叉树的高 度td = ld+ 1 ;«>e 1 seoo©td= r d+1;。隹 e t ur n t d ;)void main ()(BTNode *B t ;ei n t s , t 1 , td;业=NULL ;pri n t f ( nlnput create o rd e r: n n );B t =PreCrea t e (B t );p r i n tf (z,nThe p re o r d e r is:n);oPreorder (B t );oprin t f C n T h e inorder is:n); Ino r d e r ( B t);oprintf (nThe post o r d er is:n);