




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构实验报告题目:线性表班级:网络工程1401班学号:指导教师:高峰日期:2023/7/6实验一:线性表一:实验规定掌握数据结构中线性表的基本概念。纯熟掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及合并并运算在顺序存储结构撒谎可以的实验。纯熟掌握链表的各种操作和应用。二.实验内容1.编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。2.编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。三:实验过程及环节源代码:#include<stdio.h>#include<malloc.h>#defineLIST_INIT_SIZE100#defineLISTINCREMENT10typedefstruct{int*elem;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("\n");}intListInsert_Sq(SqList*sq,inti,inta)//在i位置之前插入a{int*p,*q;if(i<=0||i>sq->length+1){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;}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("");}}voidmain(){inti=1,a=0,boo=1,number=0;SqLists,*sq;sq=&s;InitList_Sq(sq);printf("初始化空表\n");printf("输入数据个数:\n");scanf("%d",&number);printf("输入%d个数据:",number);printf("\n");for(;i<=number;i++){scanf("%d",&a);if(boo=ListInsert_Sq(sq,i,a)){printf("---插入成功!---\n");}else{printf("---插入不成功,重新插入---!\n");i=i-1;}}printf("输出所有元素\n");visit(sq);printf("\n");printf("输出删除的位置:");scanf("%d",&a);if(boo=ListDelete_Sq(sq,a)){printf("---数据删除成功!---\n");}else{printf("---没有删除成功---\n");}printf("输出所有元素:\n");visit(sq);printf("\n");printf("输出要显示数据的位置:");scanf("%d",&a);printf("输出%d位置数值\n",a);if(a<0||a>sq->length){printf("---输出位置的数据不存在---\n");}else{GetElem(sq,a);}}环节:1.初始化空表2.顺序插入数据后输出所有元素3.选择删除位置,删除数据后输出所有元素4.选择查看的数据位置,输出选择查看的数据四:实验结果及分析分析:本程序在实现顺序存储插入以及删除i个元素开始的k个元素删除(数据类型为整型)。之外在删除、查看是实时输出结果,并且可以查看希望显示数据的位置。数据结构实验报告题目:树班级:网络工程1401班学号:指导教师:高峰日期:2023/7/6实验二:树一:实验规定掌握二叉树,二叉树排序数的概念和存储方法。掌握二叉树的遍历算法。纯熟掌握编写实现树的各种运算的算法。二.实验内容记录一棵二叉树中每种类型节点数(度为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;}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){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;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)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("树已经初始化!\n");break;case2:BitTreeCreat(BT);break;case3:BitTreeEmpty(BT);break;case4:PreOrderTraverse(BT);break;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:B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025新疆格瑞汀新材料科技有限公司招聘68人笔试参考题库附带答案详解
- 2025年03月通榆县委统一战线工作部民族宗教事务服务中心公开选调事业编制工作人员笔试历年参考题库考点剖析附解题思路及答案详解
- 上海建桥学院招聘专任教师兼职教师真题2024
- 2024年温岭市事业单位招聘考试真题
- 2024年吕梁市消防救援支队政府专职消防员招录考试真题
- 广州市增城区招聘社区专职工作人员真题2024
- 甘肃省兰州城市学院招聘真题2024
- 成都市第六人民医院招聘真题2024
- 宝鸡市市直公立医院医药卫生类人员招聘真题2024
- 感染性休克围手术期护理
- 山东科技职业学院教师招聘考试题库真题2023
- 奇门遁甲入门教程(不收费)课件
- 急诊急救的培训
- 2023年高考全国甲卷数学(理)试卷【含答案】
- 高三文科数学专题 对数平均不等式
- 悬臂式挡墙技术交底
- 旋转机械故障诊断-不平衡
- 【电力服务收费项目及标准】 电力维护收费标准
- 软件工程导论(第六版)电子教案(第1-13章)
- 《式微》课件完整版
- 幼儿园中班数学:《比较6~10两数之间的关系》 课件
评论
0/150
提交评论