




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构实验报告题目: 线性表 班级:网络工程1401班学号: 1408020106 指导教师: 高峰 日期: 2016/7/6 实验一:线性表一:实验要求 掌握数据结构中线性表的基本概念。 熟练掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及合并并运算在顺序存储结构撒谎能够的实验。 熟练掌握链表的各种操作和应用。二实验内容 1. 编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。 2. 编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。 三:实验过程及步骤源代码:#include<stdio.h>#include<malloc.h>
2、;#define 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(SqL
3、ist *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 *)reallo
4、c(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;return 1;int L
5、istDelete_Sq(SqList *sq,int i) /删除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+)int *p;p=&sq->
6、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);printf("输入%d个数据:",number);printf("n");for(;i<=number;i
7、+)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=ListDelete_Sq(sq,a)printf("-数据删除成功!-n
8、");elseprintf("-没有删除成功-n");printf("输出所有元素:n");visit(sq);printf("n");printf("输出要显示数据的位置:");scanf("%d",&a);printf("输出%d位置数值n",a);if(a<0|a>sq->length)printf("-输出位置的数据不存在-n");elseGetElem(sq,a);步骤:1.初始化空表2.顺序插入数据后输出所有
9、元素3.选择删除位置,删除数据后输出所有元素4.选择查看的数据位置,输出选择查看的数据四:实验结果及分析 分析: 本程序在实现顺序存储插入以及删除i个元素开始的k个元素删除(数据类型为整型)。之外在删除、查看是实时输出结果,并且可以查看希望显示数据的位置。数据结构实验报告题目: 树 班级:网络工程1401班学号: 1408020106 指导教师: 高峰 日期: 2016/7/6 实验二:树一:实验要求 掌握二叉树,二叉树排序数的概念和存储方法。 掌握二叉树的遍历算法。熟练掌握编写实现树的各种运算的算法。二实验内容 统计一棵二叉树中每种类型节点数(度为0/1/2的节点数)。三:实验过程及步骤#i
10、nclude<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct BitNode int 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("
11、;请输入节点的内容,输入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); return BT; void BitTreeEmpty(BitTree BT) if(BT=NULL) printf("树为空!n"); else printf("树非空!n&quo
12、t;); void PreOrderTraverse(BitTree BT) if(BT!=NULL) printf("树结点的内容为:%dn",BT->data); PreOrderTraverse(BT->lchild); PreOrderTraverse(BT->rchild); void InOrderTraverse(BitTree BT) if(BT!=NULL) InOrderTraverse(BT->lchild); printf("树结点的内容为:%dn",BT->data); InOrderTravers
13、e(BT->rchild); void PostOrderTraverse(BitTree BT) if(BT!=NULL) PostOrderTraverse(BT->lchild); PostOrderTraverse(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(Bi
14、tTree BT) int i=1,j=1; if(BT=NULL) return 0; else i=BinTreeDepth(BT->lchild); j=BinTreeDepth(BT->rchild); if(i>j) return(i+1); else return (j+1); void BinTreeClear(BitTree &BT) if(BT) if(BT->lchild) BinTreeClear(BT->lchild); if(BT->rchild) BinTreeClear(BT->rchild); free(BT);
15、 BT=NULL; main() int i=1,j,l; BitTree BT; 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(&qu
16、ot;-谢谢使用-n"); scanf("%d",&j); switch(j) case 1:BT=BitTreeInit();printf("树已经初始化!n");break; 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("树的深度为:%dn",l);break; case 8:l=count(BT);printf("树的结点数为:%dn",l);b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冀教版三年级下册数学教学计划(及进度表)
- 某住宅项目营销执行报告分析
- 2025年春初中苏科版八年级下册物理10.4《浮力》说课稿
- 2025年党章党纪党史党建知识竞赛多项选择题库及答案(共200道题)
- 项目工作应聘简历模板
- 毕业生工资调整通知函
- 软件开发项目管理工具应用指南
- 交通信号系统方案
- 项目团队建设与合作策略沟通会议纪要
- 股东合作协议与权益分配方案
- 17J008挡土墙(重力式、衡重式、悬臂式)图示图集
- 合格供应商准入资料清单
- 真核基因表达调控课件
- 通用门式起重机说明书样本
- 最新全国注册监理工程师继续教育考试题库及答案(通用版)
- 脚手架作业风险分级管控及隐患排查清单
- 浙教版四年级上册数学期末知识点综合复习重点知识练习题
- 双高专业群电子商务专业群申报书
- DBJT 13-318-2019 建筑施工承插型盘扣式钢管支架安全技术规程
- (完整版)紫外线消毒记录表
- 高中人音版必修 音乐鉴赏22共筑中国梦课件
评论
0/150
提交评论