2023年数据结构与算法实验报告_第1页
2023年数据结构与算法实验报告_第2页
2023年数据结构与算法实验报告_第3页
2023年数据结构与算法实验报告_第4页
2023年数据结构与算法实验报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构实验报告题目:线性表班级:网络工程1401班学号:指导教师:高峰日期:2023/716BitTreeBT;BT=(BitNode*)ma1loc(sizeof(BitNode));BT=NULL;returnBT;)BitTreeBitTreeCreat(BitTree&BT){intch:printf(〃请输入节点的内容,输入0时结束建立!\n");scanf(0%d",&ch);if(ch==0)BT=NULL;else(BT=(BitTree)malloc(sizeof(BitNode));BT->data=ch;BitTreeCreat(BT->1child);BitTreeCreat(BT->rchild);)returnBT;}voidBitTreeEmpty(BitTreeBT){if(BT==NULL)Printf("树为空!\n");elseprintfC»5!\nO;voidPreOrderTraverse(BitTreeBT){if(BT!=NULL){printf("树结点的内容为*d\n”,BT->data);PreOrdcrTraverse(BT—>1child);PreOrderTraverse(BT->rchild);))voidInOrderTraverse(BitTreeBT){if(BT!=NULL){In0rderTraverse(BT->lchild);Printf("树结点的内容为:%d\n\BT->data);InOrderTraverse(BT->rchild);)}voidPostOrdcrTraverse(BitTreeBT){if(BT!=NULL){PostOrderTraverse(BT->1chi1d);Post0rderTraverse(BT->lchi1d);printf("树结点的内容为:%d\n",BT->data);})intcount(BitTreeBT){if(BT==NULL)return0;elsereturn(count(BT—>1child)+count(BT->rchild)+1);intBinTreeDepth(BitTreeBT){inti=l,j=1;if(BT==NULL)return0;e1se(i=BinTreeDepth(BT->lchi1d);j=BinTreeDepth(BT->rchi1d);if(i>j)return(i+l);elsereturn(j+1);))voidBinTreeC1ear(BitTree&BT){if(BT){if(BT->lchi1d)BinTreeClear(BT->1child);if(BT->rchild)BinTreeC1ear(BT->rchiId);free(BT);BT=NILL;)}mainO{BitTreeBT;while(i!=0){printf("——-区欠—'n");prinlf(〃请选择要进行的操作'n〃);printf("l.初始化一棵树2.建立一棵树3.判断树是否为空\n");printf(〃4.按前序遍历树5.按中序遍历树6.按后序遍历树\n〃);printf("7.求树的深度8.求树的结点数9.把树清空\n");。万1】4'("0.退出操作界面%〃);printf("谢谢使用\n");seanf("%d&j);switch(j){case1:BT=BitTreelnit();printf("树已经初始化!\n");break;case2:BitTreeCreat(BT);break;case3:BitTreeEmpty(BT);break;case4:Pre0rderTraverse(BT);break;case5:InOrderTraverse(BT);break;case6:Post0rderTraverse(BT);break;:1=BinTreeDepth(BT);printf(“树的深度为:%d\n”,1);break;l=count(BT);printf(“树的结点数为:%d\n",1);break;case9:BinTreeClear(BT);printf(“树已经清空!\n");break;case0:exit(0);}

环节:.选择进行的操作.初始化、建立、判断树是否空、先/中/后序遍历、求深度/结点,清空树.显示结果四:实验结果及分析■:'C:\Users\dell\Desktop\Ju®155^\demo\Debug\$.exe,欢迎使用欢迎使用请选鞍进行的操作1,瞬化-醐2建立一喇3州幅为空&着前序遍历树5•按巾序撕树6.按后序遍历树7.蝴的深度8,蝴除点数9,把端空Q点出麻界面蒯使用2请输入节点的内容,输入0时结束建立!342568964请输入节点的内容,输入耐结束建立!欢迎使用请选鞍进行的操作1,瞬化-醐2建立一喇3欢迎使用请选鞍进行的操作1,瞬化-醐2建立一喇3州幅为空&着前序遍历树5•按巾序撕树6.按后序遍历树7.蝴的深度8,蝴除点数9,把端空Q点出麻界面蒯使用2请输入节点的内容,输入0时结束建立!342568964请输入节点的内容,输入耐结束建立!■欢迎使用请选择要进行的操作1.初始化一棵树2.建立一棵树3.判断树是否为空4.按前序遍历树5.按中序遍历树6.按后序遍历树7.求树的深度8.求树的结点数9.把树清空0.退出操作界面谢谢使用才结点的内容为:3寸结点的内容为:4寸结点的内容为:2寸结点的内容为:5寸结点的内容为:6寸结点的内容为:8寸结点的内容为:9I结点的内容为:6寸结点的内容为:4L初始化一棵树2.建立一棵树3.判断树是否为空4.按前序遍历树5.按中序遍历树6.按后序遍历树7.求树的深度8.求树的结点数9.把树清空0.退出操作界面谢谢使用Q树的结点数为:9欢迎使用请选择要进行的操作1.初始化一棵树2.建立一棵树3.判断树是否为空4.按前序遍历树5.按中序遍历树6.按后序遍历树7.求树的深度8.求树的结点数9.把树清空0.退出操作界面谢谢使用7树的深度为:9分析:本程序不仅可以记录一棵二叉树中每种类型节点数(度为0/1/2的节点数)。同时让他有以下功能:1.初始化一棵树。2.建立一棵树。3.判断树是否为空。4.分别按先/中/后序遍历树。5.求树的深度。6.求树的结点数。7.清空树。实验一:线性表一:实验规定掌握数据结构中线性表的基本概念。纯熟掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及合并并运算在顺序存储结构撒谎可以的实验。纯熟掌握链表的各种操作和应用。二.实验内容.编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。.编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。三:实验过程及环节源代码:include<stdio.h>include<ma1loc.h>^defineLIST_INIT_SIZE100fineLISTINCREMENT10typcdefstruct{int*elem;int1ength;int1istsize;}SqList://SqListsq;voidInitList_Sq(SqList*sq)//初始化列表(sq->e1em=(int*)ma11oc(LIST_INIT_SIZE*sizeof(int));sq->lcngth=O;sq->listsize=LIST_INIT_SIZE;PrintfC申请空间成功!\n");)voidGetE1em(SqList*sq,inti)//获取第i位置元素的值(int*p;p=&(sq->elem[i-1]);printfC%r,*p);printf("\n");}intListlnsert_Sq(SqList*sq,inti,inta)〃在i位置之前插入a(int*p,*q;if(i<=0I|i>sq—>length+1)(printf(*——位置不合法!\n");return0;}if(sq->1ongth>=sq->1istsize)(int*newbase=(int*)realloc(sq—>elem,(sq—>1istsize+LISTINCREMENT)*sizeof(int));if(1newbase)(printf("申请空间溢出\n");return0;)sq->elem=newbase;sq->listsizc+=LISTINCREMENT;}p=&(sq->e1em[i-1]);//p指向第i位置的元素q=&(sq->elem[sq->length-1]);//q指向最后一个元素for(;q>=p;—q)*(q+1)=*q;*p=a;++sq—>1ength;return1;}intListDelete_Sq(SqList*sq,inti)〃删除i位置上的值(int*p,*q;if(i<1||i>sq->1ength)return0;P=&(sq—>elem[i-l]);//p指向第i位置的元素q=sq—>e1em+sq->1ength—l;//q指向最后一个元素for(++p;p<=q;++p)(*(pT)=*p;)—sq->length;return1;voidvisit(SqList*sq)//输出数据inti=l;for(;i<=sq->length;i++)(int*p;p=&sq->elem[i-l];printf(*%d",*p);printf("");}}voidmain()(inti=1,a=0,boo=1,numbor=0;SqLists,*sq;sq=&s;InitList_Sq(sq);printf("初始化空表\n〃);printfC输入数据个数:\n");scanf(",&number);printf("输入%€1个数据:",numbcr);printf\n〃);for(;i<=numbcr;i++)(scanf&a);if(boo=ListInsert_Sq(sq,i,a))printf("插入成功!\n");else(printfC插入不成功,重新插入--!\n");i=i-l;})Printf("输出所有元素\n");visit(sq);printf('\n〃);Printf("输出删除的位置:");scanf&a);if(boo=ListDe1ete_Sq(sq,a))(printf("—数据删除成功!\n");}else(printf("没有删除成功\n");)Printf("输出所有元素:\n〃);visit(sq);prinIf;printf("输出要显示数据的位置:〃);scanf("/d",&a);printf("输出%d位置数值\n",a);if(a<()|a>sq->length)

PrintfC—-—输出位置的数据不存在——\nH);)eIse(GetE1em(sq,a);)环节:.初始化空表.顺序插入数据后输出所有元素.选择删除位置,删除数据后输出所有元素.选择查看的数据位置,输出选择杳看的数据四:实验结果及分析Jtor方\d.1r\C>。,icTo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论