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

下载本文档

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

文档简介

数据结构实验报告题目:线性表班级:网络工程1401班学号:1408020106指导教师:高峰日期: 2016/7/6专业word可编辑实验一:线性表一:实验要求掌握数据结构中线性表的基本概念。熟练掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及合并并运算在顺序存储结构撒谎能够的实验。熟练掌握链表的各种操作和应用。二.实验内容.编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。.编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。三:实验过程及步骤源代码:#include<stdio.h>#include<malloc.h>#defineLIST_INIT_SIZE100#defineLISTINCREMENT10typedefstruct{int*elem;专业word可编辑intlength;intlistsize;}SqList;//SqListsq;voidInitList_Sq(SqList*sq)//初始化歹|」表(sq->elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));sq->length=0;sq->listsize=LIST_INIT_SIZE;printf("--叶请空间成功---!\n");}voidGetElem(SqList*sq,inti)//获取第i位置元素的值(int*p;p=&(sq->elem[i-1]);printf("%d",*p);printf("Wn");}intListInsert_Sq(SqList*sq,inti,inta)//^i位置之前插入a(int*p,*q;if(i<=0||i>sq->length+1)专业word可编辑(printf("---位置不合法---!\n");return0;)if(sq->length>=sq->listsize)(int*newbase=(int*)realloc(sq->elem,(sq->listsize+LISTINCREMENT)*sizeof(int));if(!newbase)(printf。呻请空间溢出\n");return0;)sq->elem=newbase;sq->listsize+=LISTINCREMENT;)p=&(sq->elem[i-1]);//p指向第i位置的元素q=&(sq->elem[sq->length-1]);//q指向最后一个元素for(;q>=p;--q)*(q+1)=*q;*p=a;++sq->length;return1;)专业word可编辑intListDelete_Sq(SqList*sq,inti)〃删除i位置上的值(int*p,*q;if(i<1||i>sq->length)return0;p=&(sq->elem[i-1]);//p指向第i位置的元素q=sq->elem+sq->length-1;//q指向最后一个元素for(++p;p<=q;++p)(*(p-1)=*p;)--sq->length;return1;)voidvisit(SqList*sq)〃输出数据(inti=1;for(;i<=sq->length;i++)(int*p;p=&sq->elem[i-1];printf("%d",*p);printf("");专业word可编辑)voidmain()(inti=1,a=0,boo=1,number=0;SqLists,*sq;sq=&s;InitList_Sq(sq);printf("初始化空表\n");printf("输入数据个数:\n");scanf("%d",&number);printf("输入%~个数据:",number);printf("Wn");for(;i<=number;i++)(scanf("%d",&a);if(boo=ListInsert_Sq(sq,i,a))(printfC'--插入成功!---\n");)else(专业word可编辑printfC'--插入不成功,重新插入---!\n");i=i-1;))printf("输出所有元素\n");visit(sq);printf("Wn");printf("输出删除的位置:");scanf("%d",&a);if(boo=ListDelete_Sq(sq,a))(printf("---数据删除成功!---\n");}else(printf("---没有删除成功---\n");}printf("输出所有元素:\n");visit(sq);printf("Wn");printf("输出要显示数据的位置:");scanf("%d",&a);printf("输出%~位置数值\n",a);专业word可编辑

if(a<0||a>sq->length)(printf("---输出位置的数据不存在---\n");)else(GetElem(sq,a);)步骤:.初始化空表.顺序插入数据后输出所有元素.选择删除位置,删除数据后输出所有元素.选择查看的数据位置,输出选择查看的数据四:实验结果及分析HJ'C:\Users\dell\Desktoerno\Debug\xxb.exe" — □X-—申请空间成功一-!初始化空表输入数据个数:4输入4个数据:1234—插入感功!——插入成功!—一-插入感功!--一一插入成功!一一输出所有元素1234输出删除的位置:2-—数搪册蟒成功!-一愉出所有元素:134输出要显示数据的位置:3输出M位置数值4Pressanykeytocontinue

分析:本程序在实现顺序存储插入以及删除i个元素开始的k个元素删除(数据类型为整型)。之外在删除、查看是实时输出结果,并且可以查看希望显示数据的位置。专业word可编辑数据结构实验报告题目:树班级:网络工程1401班学号:1408020106指导教师:高峰日期: 2016/7/6专业word可编辑实验二:树一:实验要求掌握二叉树,二叉树排序数的概念和存储方法。掌握二叉树的遍历算法。熟练掌握编写实现树的各种运算的算法。二.实验内容统计一棵二叉树中每种类型节点数(度为0/1/2的节点数)。三:实验过程及步骤#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedefstructBitNode{intdata;structBitNode*lchild,*rchild;}BitNode,*BitTree;BitTreeBitTreeInit(){BitTreeBT;BT=(BitNode*)malloc(sizeof(BitNode));BT=NULL;returnBT;}专业word可编辑BitTreeBitTreeCreat(BitTree&BT){intch;printf("请输入节点的内容,输入0时结束建立!\n");scanf("%d",&ch);if(ch==0)BT=NULL;else{BT=(BitTree)malloc(sizeof(BitNode));BT->data=ch;BitTreeCreat(BT->lchild);BitTreeCreat(BT->rchild);)returnBT;)voidBitTreeEmpty(BitTreeBT){if(BT=二NULL)printf("树为空!\n");elseprintf("树非空!\n");)voidPreOrderTraverse(BitTreeBT){if(BT!=NULL){专业word可编辑printf("树结点的内容为:%d\n",BT->data);PreOrderTraverse(BT->lchild);PreOrderTraverse(BT->rchild);))voidInOrderTraverse(BitTreeBT){if(BT!=NULL){InOrderTraverse(BT->lchild);printf("树结点的内容为:%d\n",BT->data);InOrderTraverse(BT->rchild);))voidPostOrderTraverse(BitTreeBT){if(BT!=NULL){PostOrderTraverse(BT->lchild);PostOrderTraverse(BT->lchild);printf("树结点的内容为:%d\n",BT->data);))intcount(BitTreeBT){if(BT=二NULL)return0;专业word可编辑elsereturn(count(BT->lchild)+count(BT->rchild)+1);)intBinTreeDepth(BitTreeBT){inti=1,j=1;if(BT=二NULL)return0;else{i=BinTreeDepth(BT->lchild);j=BinTreeDepth(BT->rchild);if(i>j)return(i+1);elsereturn(j+1);))voidBinTreeClear(BitTree&BT){if(BT){if(BT->lchild)BinTreeClear(BT->lchild);if(BT->rchild)专业word可编辑BinTreeClear(BT->rchild);free(BT);BT=NULL;))main(){inti=1,j,l;BitTreeBT;while(i!=0){printf(" 欢迎使用 \n");printf("请选择要进行的操作\n");printf("1.初始化一棵树2.建立一棵树3.判断树是否为空\n");printf("4.按前序遍历树5.按中序遍历树6.按后序遍历树\n");printf("7.求树的深度 8.求树的结点数9.把树清空\n");printf("0.退出操作界面\n");printf(" 谢谢使用 \n");scanf("%d",&j);switch(j){case1:BT=BitTreeInit();printf("SE经初始化!\n");break;case2:BitTreeCreat(BT);break;case3:BitTreeEmpty(BT);break;case4:PreOrderTraverse(BT);break;专业word可编辑

case5:InOrderTraverse(BT);break;case6:PostOrderTraverse(BT);break;case7:l=BinTreeDepth(BT);printf('树的深度为:%d\n",l);break;case8:l=count(BT);printf("树的结点数为:%d\n",l);break;case9:BinTreeClear(BT);printf(树已经清空!\n");break;case0:exit(0);步骤:.选择进行的操作.初始化、建立、判断树是否空、先/中/后序遍历、求深度/结点,清空树.显示结果四:实验结果及分析Bl"C:\Users\dell\Desktop\1^3^Q^^^\demo\Debug\s.exe"用迎一nurz25用迎一nurz258-342568,y64-哲- 一白叔叔「出一一亍枭-7手r---sr_?F=r-Su,F子F子F子F子F子F子-...r布H1■■1.居氏--?•一宅老宅一■■:■■-m-t=寸下名寸工-M-MT-一nE一yqy勺勺•勺-3-%:一翦—T-HKHKHKPHKHKHKrtKrtK-五T匕」干Jn口但-hjvhj-hj-hj-hj-hj-hj-hj-hjv-,<r.B售-.B.0.0.0.0.B.0.0.B-F.FA口上u4•匕--n.二n.二□"□"□"□”□-君力百--HJ--HJ--HJr-MJr上¥上一金占一-£hul=?.」#■■-.E3._i-士口士口士口士口士口士口士口士口士口-节丁r汇#.寸.非』-4.-;疔二疔t-±t-±l一请L♦J口二4树树树树树树树树树L初始化一棵树2.建立一棵树M.判断树是否为空4.按前序遍历树5.按中序通历树也按后序遍卤树7.求树的深度8,求树的结点数9,把树清空0.退出操和界面 谢谢使用 2请输入节点的内容,输入。时结束建立!342568964请输入节点的内容,输入0时结束建立!专业word可编辑 从胜1支1 请选择要进行的操作L初始化一棵树2.建立一棵树三判断树是否为空4.按前序遍历树5.按中序遍历树6

温馨提示

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

评论

0/150

提交评论