ImageVerifierCode 换一换
格式:DOCX , 页数:45 ,大小:520.52KB ,
资源ID:11933984      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11933984.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验报告.docx

1、数据结构实验报告数 据 结 构实 验 报 告 专 业 惠普测试 班 级 142班 姓 名 张建一 学 号 1408090219 学 期 2015-2016学年第一学期 指导老师 刘勇 实验1234总分成绩成绩:教师评语: 数据结构 上机实验报告学号: 1408090219 姓名: 张建一 所在系: 信息学院 班级: 惠普测试142 实验名称: 线性结构基本算法的实现 实验日期 实验指导教师 刘勇 实验机房 弘毅楼D410 -1. 实验目的:(1) 掌握线性表顺序存储结构的基本操作:插入、删除、查找;(2) 掌握线性表链式结构的基本操作:插入、删除、合并等运算;(3)掌握栈和队列基本运算的算法;

2、(4)掌握稀疏矩阵的压缩存储的算法。2. 实验内容:(1)实现顺序表的创建、插入、删除和查找的操作;(2)实现单链表 插入、删除、合并的操作;(3)实现2个有序线性表的合并;(4)利用顺序栈实现括号匹配的算法;(5)实现顺序队列各种基本运算的算法;(6)实现链栈各种基本运算的算法;(选做)(7)实现链队列各种基本运算的算法;(选做)(8)实现稀疏矩阵压缩存储的算法。3算法设计(编程思路或流程图或源代码) 内容:1、 顺序表的插入和删除2、 有序单链表的合并3、 数制转换的算法实现1#include#include#define LIST_INIT_SIZE 100 #define LISTIN

3、CREMENT 10#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int ElemType;typedef int Status;typedef struct ElemType *elem; int length; int listsize;SqList;Status InitList_Sq(SqList *L) L-elem =(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); i

4、f(!L-elem) return OVERFLOW; L-length=0; L-listsize=LIST_INIT_SIZE; return OK;Status CreatList_Sq(SqList *L,int n) int i; L-length=n; for(i=0;ielemi); return OK;void TraverList_Sq(SqList *L) int i; printf(顺序表的长度为:%dn,L-length); printf(顺序表中的元素依次为:); for(i=0;ilength;i+) printf(%5d,L-elemi); printf(n);

5、int ListInsert_Sq(SqList *L,int i,int e) int *newbase,*q,*p; if(iL-length+1) printf(由于插入位置不合法导致插入操作失败n); return ERROR; else if(L-length=L-listsize) newbase=(int *)realloc(L-elem,(L-listsize+LISTINCREMENT)*sizeof(int); if(!newbase)return OVERFLOW; L-elem=newbase; L-length=+LISTINCREMENT; q=&(L-elemi-

6、1); for(p=&L-elemL-length;p=q;p-) *(p+1)=*p; *q=e; +L-length; return OK; int DeleteList_Sq(SqList *L,int i,int e) int x,*q,*p; if(iL-length) printf(由于删除位置不合法无法进行删除n); return ERROR; else if(L-length=0) printf(由于是空表无法删除n); return OVERFLOW; else q=&(L-elemi-1); e=L-elemi-1; printf(第%d个元素%d已删除n,i,e); fo

7、r(p=&(L-elemL-length-1);qlength; return OK; int main() SqList a,*l=&a; int select,n,i,x,m,b; do printf(n第一次使用初始化n); printf(1 初始化n); printf(2 顺序表的创建n); printf(3 顺序表的插入n); printf(4 顺序表的删除n); printf(5 顺序表的遍历n); printf(0 退出nn); printf(请选择操作 1-5: ); scanf(%d,&select); switch(select) case 1: if(!InitList_

8、Sq(l) printf(顺序表初始化失败n); InitList_Sq(l); printf(顺序表已经初始化n); break; case 2: printf(请输入要创建的顺序表的长度:); scanf(%d,&n); CreatList_Sq(l,n); TraverList_Sq(l); break; case 3: printf(请输入要插入的位置:); scanf(%d,&i); printf(请输入要插入的元素:); scanf(%d,&x); ListInsert_Sq(l,i,x); TraverList_Sq(l); break; case 4: printf(请输入要删

9、除的位置:); scanf(%d,&m); DeleteList_Sq(l,m,b); TraverList_Sq(l); break; case 5: TraverList_Sq(l); break; while(select=1); return 0;2#include#includetypedef struct node int data; struct node *next;node,*list;void init(list &head) head = (list)malloc(sizeof(node); head-next = NULL;void input(list &h) lis

10、t p,q; q = h; printf(输入数据的个数:); int n; scanf(%d,&n); printf(请输入%d个有序递增的数据,n); for(int i=0; idata); p-next = q-next; q-next = p; q = p; void output(list h) list p; p = h-next; printf(输出数据n); while(p!=NULL) printf(%d ,p-data); p = p-next; void combine(list &a,list &b,list &c) list p,q,t; p = a-next; q

11、 = b-next; free(b); b = q; c = a; a = p; c-next = NULL; while(p&q) if(p-data data) a = a-next; p-next = c-next; c-next = p; p = a; else b = q-next; q-next = c-next; c-next = q; q = b; if(p!=NULL) while(p) a = a-next; p-next = c-next; c-next = p; p = a; if(q!=NULL) while(q) b = q-next; q-next = c-nex

12、t; c-next = q; q = b; int main() list a,b,c; init(a);init(b); printf(输入链表A:n); input(a); printf(输入链表B:b); input(b); combine(a,b,c); output(c); return 0;3#include void fun(int x,int k);int main() int n; printf(你要测试几组数据? ); scanf(%d, &n); printf(请输入%d组数据(输入格式:a b):n,n); int i,k,x; for(i = 0;i 0); for(

13、-c;c=0;-c) if(zuc !=-1&zuc 9) printf(%c,zuc+(A-10); else printf(%d,zuc); 4.程序调试(实验数据记录根据程序要求输入几组不同数据,记录程序运行结果,并分析结果,分析程序运行中出现的主要错误。或对其他程序环境的使用情况的记录。注:必须认真书写)1235.讨论(通过实验的一些体会、学会的知识和技能等)1、线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素2、线性链表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素 数据结构 上机实验报告学号: 1408090219 姓名: 张建一 所在系: 信

14、息学院 班级: 惠普测试142 实验名称: 二叉树的基本应用 实验日期 实验指导教师 刘勇 实验机房 D410 -2. 实验目的:(1) 理解树这种数据结构。(2)掌握二叉树二叉链表这种存储结构。(3)完成二叉树各种基本运算的算法。2. 实验内容:(1)实现二叉树创建的算法。(2)实现二叉树各种遍历算法。(3)实现二叉树其他操作的算法,包括:统计叶子结点的个数、求二叉树的深度、线索二叉树等。3算法设计(编程思路或流程图) 1、 二叉树创建的算法2、 叶子结点统计的算法3、 二叉树深度统计算法 1#include#include#include#define MAX 20#define OK 1

15、#define ERROR 0#define OVERFLOW 0typedef char TElemType;typedef int Status;typedef struct BiTNode TElemType data; struct BiTNode *lchild,*rchild;BiTNode,*BiTree;BiTree CreateBiTree(BiTree T) char ch; scanf(%c,&ch); if(ch=#) T=NULL; else T = (BiTNode*)malloc(sizeof(BiTNode); if(!T) exit(OVERFLOW); T-

16、data = ch; T-lchild = CreateBiTree(T-lchild); T-rchild = CreateBiTree(T-rchild); return T;void LevelOrder(BiTree T) BiTree QueueMAX,b; int front,rear; front = rear = 0; if(T) Queuerear+ = T; while(front!=rear) b = Queuefront+; printf(%2c,b-data); if(b-lchild !=NULL) Queuerear+ = b-lchild; if(b-rchil

17、d !=NULL) Queuerear+ = b-rchild; 主函数#include BiTNode.hint main() BiTree T = NULL; printf(*采用递归函数构造一棵二叉树*n); printf(请读入构造二叉树的字符序列:); if(T=CreateBiTree(T) printf(二叉树建立成功!并以层序遍历输出构造的二叉树n); LevelOrder(T); printf(n); else printf(很遗憾,不能成功建立二叉树!n); return 0;2#include#include BiTNode.hint leafcount(BiTree b

18、t) int n; if(bt =NULL) return 0; else if(bt-lchild=NULL) & (bt-rchild=NULL) n = 1; else n = leafcount(bt-lchild) + leafcount(bt-rchild); return n;int main() BiTree T = NULL; int m; printf(*构造一颗二叉树并统计叶子结点的数*n); printf(请输入二叉树的序列:); T = CreateBiTree(T); if(T) printf(二叉树建立成功!以层序遍历输出构造的二叉树n); LevelOrder(

19、T); m = leafcount(T); printf(n该二叉树的叶子结点数目是: %dn,m); else printf(二叉树建立不成功!n); return 0;3#include#include BiTNode.hint depth(BiTree bt);int main() BiTree T = NULL; printf(*构造一颗二叉树并统计深度*n); printf(请输入二叉树的序列:); T = CreateBiTree(T); if(T) printf(二叉树建立成功!以层序遍历输出构造的二叉树n); LevelOrder(T); int m = depth(T); p

20、rintf(n该二叉树的深度是: %dn,m); else printf(二叉树建立不成功!n); return 0; int depth(BiTree bt) if(bt =NULL) return 0; else int dm = depth(bt-lchild); int dn = depth(bt-rchild); return dm dn ? dm+1 : dn+1; 4程序调试(实验数据记录根据程序要求输入几组不同数据,记录程序运行结果,并分析结果,分析程序运行中出现的主要错误。或对其他程序环境的使用情况的记录。注:必须认真书写)1235讨论(通过实验的一些体会、学会的知识和技能等

21、)1、树形结构是一类重要的非线性数据结构。二叉树的特点是每个结点至多只有两棵子树,并且二叉树的子树有左右之分次序不能任意颠倒2、二叉树的性质:(1)在二叉树的第i层上至多有2i-1个结点(i=1)(2)深度为K的二叉树至多有2k -1个结点(k=1)(3)对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2则n0=n2+1(4)具有n个结点的完全二叉树的深度为log2 n +1 数据结构 上机实验报告学号: 1408090219 姓名: 张建一 所在系: 信息学院 班级: 惠普测试142 实验名称: 图的基本实现与应用 实验日期 实验指导教师 刘勇 实验机房 D410 -3. 实验

22、目的:(1) 理解图这种数据结构。(2) 掌握邻接矩阵、邻接表这种存储结构的实现方法。(3) 完成图的遍历的算法。2. 实验内容:(1)实现图的邻接矩阵与邻接表结构的转换。(必做)(2)实现图遍历的算法。(必做)(3)实现图的拓扑排序的算法。(4)实现图的最短路径的算法3算法设计(编程思路或流程图)1、 图的邻接矩阵和邻接表创建的算法2、 图的两种遍历算法1#define VERTEXTYPE int#define ADJTYPE int#define MAXLEN 40#include#includetypedef struct VERTEXTYPE vexsMAXLEN; ADJTYPE

23、arcsMAXLENMAXLEN; int vexnum,arcnum; int kind;MGRAGH;typedef struct node3 int adjvex; struct node3 *next;EDGENODE;typedef struct VERTEXTYPE vertex; EDGENODE *link; int id;VERTEXNODE;typedef struct VERTEXNODE adjlistMAXLEN; int vexnum,arcnum; int kind;ADJGRAGH;MGRAGH create_MGRAGH() int i,j,k; MGRAGH mg; mg.kind = 2; printf(nninput vertexnum and arcnum(,):); scanf(%d,%d,&i,&j); fflush(stdin); mg.vexnum = i; mg.arcnum = j; printf(nn); for (i=0; img.vexnum; i+) printf(input the value of vertex %d:,i+1); scanf(%d,&mg.vexsi); fflush(stdin); for(i=0; img.vexnum;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1