还剩6页未读,继续阅读
文本内容:
I I部阚七号LIAOCHENGUNIVERSITY,**f-/[20222022学年第学期】【
一、基本信息】【实验课程】数据结构【设课形式】啦口趣a【课程学分】4【实验项目】校和队列【项目类型】【项目学时】翱□琮合瞅计□研趣新□其它[]4【学生姓名】沈凯【学号】2022205377【系别专业】软件开辟【实验班组】级班组台【同组学生】【实验室名】船实麟【实验日期】【报告日期】
2022.
2022.【
二、实验教师对报告的最终评价及处理意见】实验成绩(涂改无效)指导教师签名张振领年月日)±:要将翦领目、实嬲程的獭评定及课程考勤法哪皓知牲,林翦篦即心备案【
三、实验预习】实验目的和要求
1、髓掌握二遍螭构,以及娣懒构的麟;
2、会定义二叉懒碘构;
3、能娜二跑腱立、期等雕,敲破掰颠、懈肺质飘归算法以及蝇融算法实验内容和原理或者涉及的知识点自魂与程序实贮用岫各种基本操作,如二叉避健立遍历等实验条件具有C露籁开舸境撕算机实验设计方案好的算法有
1、递归建立二叉林
2、轮触遍历二叉桃
3、中序递归遍历二叉梯
4、后序递归遍历二叉机
5、中麻就颠二嘱翦微习成绩(涂改无效)合格口不合格口【
四、实验过程、数据和实验结果记录】©嫌就、躅嘘作晓腑辘述或起就现
②辘过程幡人随他魏、即斯螺施录何加附页I、辘镂羽赧瞰嬲计族朋伪c代码如下typedefstructBiTNode{TelemType data;structBiTNode*Ichild,*rchild;}BiTNode,*BiTree;s〃ta按tu先s C序r次ea序teB输iT入re二e叉B机iT中re绐e点T的{f,空格表示空树//生成二叉梆的二叉链表存储结构,T为根缰点指针scanf*%c,ch;r〃建立根结点if ch==T=NULL;else{〃建立左子树if!T=BiTNode*malloc sizeofBiTNodeexit OVERFLOW;T-data=ch;〃建立右子树CreateBiTree T-lchild;CreateBiTree T-rchild;return OK;}//CreateBiTree%//输出元素值status PrintElementTelemType eprintf”c”,e;return OK;status PreorderTraverseBiTree T,//先施历雕殿针为T的二财status*visitTelemType e{if T{ifvisit T-data ifPreorderTraverse T-Ichild,visit ifPreorderTraverse T-rchild,visitreturn OK;return ERROR;Status}eIlsneorrdeeturTrrnaOveKr;s/e/lifBiTTr}e/e/TP,reStoartduesrT*rvaivseirtseTElemType e{//先序遍历根融指针为T的二购if T{if InorderTraverselT-lchild,visitif visitT-dataif InorderTraverselT-rchild,visit return OK;return ERROR;}else return OK;//if T}//InorderTraversestatus PostorderTraverseBiTree T,status*visitTelemType e{〃后序遍历根轴指针为T的二叉树if T{if PostorderTraverseT-1child,visitif PostorderTraverseT-rchiId,visitif visitT-data return OK;return ERROR;}else return OK;//if T}//PostorderTraverseStatus InorderTraverse2BiTree T,Status*visit TElemTypeeSqStack S;找到最左下的结点InitStack S;BiTree p=T;}//根指针进栈,遍历左子树while p||!StackEmptyS{//else{//®W,访问搬点遍历右子枇if p{PushS,p;p=p-lchild;S,Pop p;if!visit p-datareturn ERROR;p=p-rchild;}//else}//whilereturn OK;
2、将算法触为程就四}//InOrderTraverseftinclude stdio.hftinclude string.hftinclude stdlib.httdefine LIST_INIT_SIZE10^define LISTINCREMENT100ftdefine STACK_INIT_SIZE100^define STACKINCREMENT10^define TRUE1#define FALSE0#define true1#define false0ttdefine OK1#define ERROR0^define INFEASIBLE-1ttdefine OVERFLOW-2^define OPSETSIZE7^define MAXQSIZE100#define NULL0typedef charTelemType;typedefint Status;typedefstructBiTNode{TelemType data;structBiTNode*lchild,*rchild;}BiTNode,*BiTree;Status CreateBiTreeBiTree*T;Status PrintElementTelemTypee;Status visitTelemType e;Status PreorderTraverseBiTree T,Status*visitTelemType e;Status InorderTraverseBiTreeT,Status*visit TelemTypee;StatusPostorderTraverseBiTree T,Status*visitTelemType e;intmain{BiTreeT;printf Z/Please inputcharacters tocreate atree:\n/z;CreateBiTreeT;printfPreorderTraverse:〃;PreorderTraverseT,visit;printf/z\nInorderTraverse:;InorderTraverseT,visit;printf/z\nPostorderTraverse:z/;PostorderTraverseT,visit;return0;}Status CreateBiTreeBiTree*Tchar ch;ch=getchar;if ch==*T=NULL;elseif!*T=BiTNode*mallocsizeof BiTNodeexit OVERFLOW;*T-data=ch;CreateBiTree*T-lchiId;CreateBiTree*T-rchild;return OK;}Status PrintElementTelemTypeeprintf〃%c〃,e;return OK;}Status visitTelemType e{printf〃%c〃,e;returnOK;Status PreorderTraverseBiTreeT,Status*visitTelemType e{if T{if visitT-dataif PreorderTraverseT-lchild,visitif PreorderTraverseT-rchild,visit returnOK;return ERROR;returnOK;Status InorderTraverseBiTreeT,Status*visitTelemTypee{if T{if InorderTraverseT-lchild,visitif visitT-dataif InorderTraverseT-rchild,visit returnOK;return ERROR;returnOK;}Status PostorderTraverseBiTreeT,Status*visitTelemTypeeif T{if PostorderTraverseT-lchild,visit ifPostorderTraverseT-rchild,visitif visitT-data returnOK;return ERROR;returnOK;}
3、编译、链抵运行程度intmain{BiTreeT;printf/zPlease inputcharacters tocreate atree:\n/z;CreateBiTree T;printf z,PreorderTraverse:z/;PreorderTraverseT,visit;printf z/\nInorderTraverse:z/;InorderTraverseT,visit;printf z/\nPostorderTraverse:〃;PostorderTraverseT,visit;return0;实验数据和实验结果记录程序的一个运行实例如下fT记录成绩(涂改玻合格口不合格口【
五、实验结果分析】
1、分析购转换时后映出懈点
2、分析嫉将数转换为二进制,conversion函数的修改;
3、分析如颗有初始化撕操作时断艇行糠
3、写出自己的心得体联。