版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构实验报告题目线性表班级:网络工程 1401班学号:1408020106指导教师:高峰日期:2016/7/6实验一: 线性表一:实验要求掌握数据结构中线性表的基本概念。熟练掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及 合并并运算在顺序存储结构撒谎能够的实验。熟练掌握链表的各种操作和应用。二实验内容1. 编程实现在顺序存储的有序表中插入一个元素(数据类型为整型) 。2. 编程实现把顺序表中从 i 个元素开始的 k 个元素删除(数据类型为整型) 。三:实验过程及步骤源代码:#include<stdio.h>#include<malloc.h>#defi
2、ne LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef structint * elem;int length;int listsize;SqList;/SqList sq;void InitList_Sq(SqList *sq) /初始化列表sq->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int);sq->length=0;sq->listsize=LIST_INIT_SIZE;printf("-申请空间成功 -!n");void GetElem(SqList *
3、sq,int i)/获取第 i 位置元素的值int *p;p=&(sq->elemi-1); printf("%d",*p); printf("n");int ListInsert_Sq(SqList *sq,int i,int a)/在 i 位置之前插入 aint *p,*q;if(i<=0|i>sq->length+1)printf("-位置不合法 -!n");return 0;if(sq->length>=sq->listsize)int* newbase=(int *)real
4、loc(sq->elem,(sq->listsize+LISTINCREMENT)*sizeof(int); if(!newbase) printf(" 申请空间溢出 n"); return 0; sq->elem=newbase; sq->listsize+=LISTINCREMENT;p=&(sq->elemi-1);/p 指向第 i 位置的元素 q=&(sq->elemsq->length-1);/q 指向最后一个元素 for(;q>=p;-q) *(q+1)=*q;*p=a;+sq->length
5、;return 1;删除 i 位置上的值int ListDelete_Sq(SqList *sq,int i) / int *p,*q;if(i<1|i>sq->length) return 0;p=&(sq->elemi-1);/p 指向第 i 位置的元素q=sq->elem+sq->length-1;/q 指向最后一个元素for(+p;p<=q;+p)*(p-1)=*p;-sq->length;return 1;输出数据void visit(SqList *sq)/int i=1;for(;i<=sq->length;i+
6、)int *p;p=&sq->elemi-1;printf("%d",*p); printf(" ");void main()int i=1,a=0,boo=1,number=0;SqList s,*sq; sq=&s;InitList_Sq(sq); printf(" 初始化空表 n"); printf(" 输入数据个数: n"); scanf("%d",&number);prin tf("输入 d(数据:”,n umber);printf("
7、n");for(;i<=number;i+) scanf("%d",&a);if(boo=ListInsert_Sq(sq,i,a)printf("-插入成功! -n");elseprintf("-插入不成功 , 重新插入 - ! n");i=i-1;printf(" 输出所有元素 n"); visit(sq);printf("n"); printf(" 输出删除的位置 :"); scanf("%d",&a);if(boo=
8、ListDelete_Sq(sq,a)printf("-数据删除成功! -n");else printf("-没有删除成功 -n"); printf(" 输出所有元素 :n");visit(sq); printf("n"); printf(" 输出要显示数据的位置: "); scanf("%d",&a);printf(”输出4位置数值n",a);if(a<0|a>sq->length)printf("-输出位置的数据不存在-n&q
9、uot;);elseGetElem(sq,a); 步骤:1. 初始化空表2顺序插入数据后输出所有元素3. 选择删除位置,删除数据后输出所有元素4. 选择查看的数据位置,输出选择查看的数据四:实验结果及分析占的-兀理u垢/r-蚁:a铜入右亍漫交扌居:12 34-!入 坯!撷出外角元素12 3 4=车舸出H刖降白勺爭r二它_敕折即昨皿功!4®出垢肃主二3. 出徨ASlr出安丘干敕斑白勺位口 = s辎1出段位N细洁b.r*r ass jaiTv- kuv "to u uain* 5_ iru 口用翌爭可扌jj卡亍初入迭全 ;分析:本程序在实现顺序存储插入以及删除i个元素开始的k个
10、元素删除(数据类型为 整型)。之外在删除、查看是实时输出结果,并且可以查看希望显示数据的位置。数据结构实验报告题目树班级:网络工程 1401班学号:1408020106指导教师:高峰日期:2016/7/6实验二: 树一:实验要求 掌握二叉树,二叉树排序数的概念和存储方法。 掌握二叉树的遍历算法。熟练掌握编写实现树的各种运算的算法。二实验内容 统计一棵二叉树中每种类型节点数(度为 0/1/2 的节点数) 三:实验过程及步骤#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct Bi
11、tNodeint data;struct BitNode *lchild,*rchild;BitNode,*BitTree;BitTree BitTreeInit()BitTree BT;BT=(BitNode*)malloc(sizeof(BitNode);BT=NULL;return BT;BitTree BitTreeCreat(BitTree &BT)int ch;printf(" 请输入节点的内容 , 输入 0 时结束建立! n"); scanf("%d",&ch);if(ch=0)BT=NULL;elseBT=(BitTree
12、)malloc(sizeof(BitNode);BT->data=ch;BitTreeCreat(BT->lchild);BitTreeCreat(BT->rchild);return BT;void BitTreeEmpty(BitTree BT)if(BT=NULL)printf(" 树为空! n");elseprintf(" 树非空! n");void PreOrderTraverse(BitTree BT) if(BT!=NULL)printf(" 树结点的内容为 :%dn",BT->data);Pre
13、OrderTraverse(BT->lchild);PreOrderTraverse(BT->rchild);void InOrderTraverse(BitTree BT) if(BT!=NULL)InOrderTraverse(BT->lchild);printf(" 树结点的内容为 :%dn",BT->data);InOrderTraverse(BT->rchild);void PostOrderTraverse(BitTree BT) if(BT!=NULL)PostOrderTraverse(BT->lchild);PostOr
14、derTraverse(BT->lchild);printf(" 树结点的内容为 :%dn",BT->data);int count(BitTree BT) if(BT=NULL) return 0; else return(count(BT->lchild)+count(BT->rchild)+1);int BinTreeDepth(BitTree BT)int i=1,j=1;if(BT=NULL)return 0;elsei=BinTreeDepth(BT->lchild); j=BinTreeDepth(BT->rchild);i
15、f(i>j) return(i+1);elsereturn (j+1);void BinTreeClear(BitTree &BT) if(BT)if(BT->lchild)BinTreeClear(BT->lchild); if(BT->rchild)BinTreeClear(BT->rchild);free(BT);BT=NULL; main()int i=1,j,l; BitTree BT; while(i!=0)printf(" 欢迎使用 n");printf("请选择要进行的操作 n");printf(&q
16、uot;1.初始化一棵树 2. 建立一棵树 3.判断树是否为空 n");printf("4.按前序遍历树 5. 按中序遍历树6. 按后序遍历树 n");printf("7.求树的深度 8. 求树的结点数9. 把树清空 n");printf("0.退出操作界面 n");printf(" 谢谢使用 n");scanf("%d",&j);switch(j)树已经初始化! n");break;树的深度为: %dn",l);break; 树的结点数为: %dn&quo
17、t;,l);break;树已经清空! n");break;case 1:BT=BitTreeInit();printf("case 2:BitTreeCreat(BT);break;case 3:BitTreeEmpty(BT);break;case 4:PreOrderTraverse(BT);break;case 5:InOrderTraverse(BT);break;case 6:PostOrderTraverse(BT);break;case 7:l=BinTreeDepth(BT);printf("case 8:l=count(BT);printf(&q
18、uot;case 9:BinTreeClear(BT);printf(" case 0:exit(0);步骤:1. 选择进行的操作2. 初始化、建立、判断树是否空、先 /中/后序遍历、求深度 / 结点,清空树3. 显示结果四:实验结果及分析.denfi10 'CAUscrsMelM就迎使冃 始亿-翩2准立-榊 诩刪昱否为空5肘序遍历樹6我后祛测 7席厠眾&繩的结点数9刪靛欢迎使冃青选择要进行的操作初始化一棵树2.建立一棵掬3.判斷树是否为空 札按前序遍历树5.按中序遍历樹&按后序遍历树 k求拘的深度E.求树的结点数9.扌酬清空 以退出操作界面P谢谢使用稱人节点的内容鬲人o牆朿建立| 342568964稱人节点朋容鬲人0牆朿建立I石结点的内容为:3 树结点的内容为:4 树结点的内容为:2 树结点的内容为:5 鮒结点的内容为:6 树结点的内容为眉 的结点的内容为:9 树结点的内容为角 軸结点的内容为4谢谢使用对的结点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泉州经贸职业技术学院《保险法》2025-2026学年期末试卷
- 阳泉职业技术学院《经济应用文写作》2025-2026学年期末试卷
- 南昌理工学院《健康管理学》2025-2026学年期末试卷
- 渔业船员岗前理论实操考核试卷含答案
- 合成氨净化工操作安全知识考核试卷含答案
- 润滑油调合操作工安全综合评优考核试卷含答案
- 高压熔断器装配工安全意识模拟考核试卷含答案
- 液体二氧化硫工冲突管理评优考核试卷含答案
- 电化学反应工安全专项知识考核试卷含答案
- 电焊工岗前工作考核试卷含答案
- 食品安全管理体系的食品安全责任划分和追责机制
- 政审自传完整
- 湖州优彩新材料股份有限公司年产5000吨近红外反射新材料智能技改项目环境影响报告
- 动力管道设计手册-第2版
- (2)-集体合同工作流程图示与范例
- 河南卢氏县等8个国家重点生态功能区产业准入负面清单(试行)
- 上海钢结构厂房主体结构工程监理质量评估报告
- 蛇咬伤的救治
- GB/T 325.2-2010包装容器钢桶第2部分:最小总容量208L、210L和216.5L全开口钢桶
- GB/T 29302-2012无损检测仪器相控阵超声检测系统的性能与检验
- 哈工大招生宣传ppt
评论
0/150
提交评论