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

下载本文档

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

文档简介

1、 数据结构与算法实验报告 数据结构实验报告 题目: 线性表 班班级:网络工程1401 1408020106 学号: 高峰指导教师: 日期: 2016/7/6 实验一:线性表 一:实验要求 掌握数据结构中线性表的基本概念。 熟练掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及合并并运算在顺序存储结构撒谎能够的实验。 熟练掌握链表的各种操作和应用。 二实验内容 1. 编程实现在顺序存储的有序表中插入一 个元素(数据类型为整型)。 2. 编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。 三:实验过程及步骤 源代码: #include #include #define L

2、IST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct int * 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 *sq,int i)/获取第i位置

3、元素的值 int *p; p=&(sq-elemi-1); printf(%d,*p); printf(); int ListInsert_Sq(SqList *sq,int i,int a)/在i位置之前插入a int *p,*q; if(isq-length+1) printf(-位置不合法-!n); return 0; if(sq-length=sq-listsize) int* newbase=(int *)realloc(sq-elem,(sq-listsize+LISTINCREMENT)*sizeof(int); if(!newbase) n); 申请空间溢出牰湩晴尨return

4、 0; sq-elem=newbase; sq-listsize+=LISTINCREMENT; 位置的元素ip=&(sq-elemi-1);/p指向第后指q=&(sq-elemsq-length-1);/q向最 一个元素for(;q=p;-q) *(q+1)=*q; *p=a; +sq-length; return 1; int ListDelete_Sq(SqList *sq,int i) /删除i位置上的值 int *p,*q; if(isq-length) return 0; p=&(sq-elemi-1);/p指向第i位置的元素 q=sq-elem+sq-length-1;/q指向最

5、后一个元素 for(+p;plength; return 1; void visit(SqList *sq)/输出数据 int i=1; for(;ilength;i+) 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); 牰湩晴尨初始化空表n); 牰湩晴尨输入数据个数:n); scanf(%d,&number); 牰湩晴尨输入%d个数据:,number); printf(); for(;i=n

6、umber;i+) scanf(%d,&a); if(boo=ListInsert_Sq(sq,i,a) printf(-插入成功!-n); else printf(-插入不成功,重新插入-!n); i=i-1; 牰湩晴尨输出所有元素n); visit(sq); printf(); 牰湩晴尨输出删除的位置:); scanf(%d,&a); if(boo=ListDelete_Sq(sq,a) printf(-数据删除成功!-n); else printf(-没有删除成功-n); 牰湩晴尨输出所有元素:n); visit(sq); printf(); 牰湩晴尨输出要显示数据的位置:); scan

7、f(%d,&a); 牰湩晴尨输出%d位置数值n,a); if(asq-length) printf(-输出位置的数据不存在-n); else GetElem(sq,a); 步骤: 1.初始化空表 2.顺序插入数据后输出所有元素 3.选择删除位置,删除数据后输出所有元素 4.选择查看的数据位置,输出选择查看的数据 四:实验结果及分析 分析:i个元素开始的k个元本程序在实现顺序存储插入以及删除 素删除(数据类型为整型)。之外在删除、查看是实时输出结果,并且可以查看希望显示数据的 位置。 数据结构实验报告 树 题目: 班班级:网络工程1401 学号: 1408020106 指导教师: 高峰 日期:

8、2016/7/6 实验二:树 一:实验要求 掌握二叉树,二叉树排序数的概念和存储方法。 掌握二叉树的遍历算法。 熟练掌握编写实现树的各种运算的算法。 二实验内容 统计一棵二叉树中每种类型节点数(度为0/1/2的节点数)。 三:实验过程及步骤 #include #include #include typedef struct BitNode int data; struct BitNode *lchild,*rchild; BitNode,*BitTree; BitTree BitTreeInit() BitTree BT; BT=(BitNode*)malloc(sizeof(BitNode)

9、; BT=NULL; return BT; BitTree BitTreeCreat(BitTree &BT) int ch; ?牰湩晴尨请输入节点的内容,输入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) ?牰湩晴尨树为空!n); else ?牰

10、湩晴尨树非空!n); void PreOrderTraverse(BitTree BT) if(BT!=NULL) ?牰湩晴尨树结点的内容为:%dn,BT-data); PreOrderTraverse(BT-lchild); PreOrderTraverse(BT-rchild); void InOrderTraverse(BitTree BT) if(BT!=NULL) InOrderTraverse(BT-lchild); ?瀠楲瑮?树结点的内容为:%dn,BT-data); InOrderTraverse(BT-rchild); void PostOrderTraverse(BitTr

11、ee BT) if(BT!=NULL) PostOrderTraverse(BT-lchild); PostOrderTraverse(BT-lchild); ?牰湩晴尨树结点的内容:%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; else i=BinTreeDepth(BT-lchild); j=

12、BinTreeDepth(BT-rchild); if(ij) 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); BT=NULL; main() int i=1,j,l; BitTree BT; while(i!=0) printf(-欢迎使用-n); ?牰湩晴尨请选择要进行的操作n); printf(.初始化一棵树 2.建立一棵树

13、 3.判断树是否为空n); printf(.按前序遍历树 5.按中序遍历树 6.按后序遍历树n); printf(_x0007_.求树的深度 8.求树的结点数 9.把树清空n); printf(退出操作界面n); printf(-谢谢使用-n); scanf(%d,&j); switch(j) case ?呂?瑩牔敥湉瑩?瀻楲瑮?树已经初始化!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 ?楂呮敲?灥桴?瀻楲瑮?树的深度为:%dn,l);break; ?慣敳?氺挽畯瑮?瀻楲瑮?树的结点数为:%dn,l);break; case ?楂呮敲?敬牡?瀻楲瑮?树已经清

温馨提示

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

评论

0/150

提交评论