ImageVerifierCode 换一换
格式:DOC , 页数:32 ,大小:280KB ,
资源ID:4217778      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(数据结构实训报告.doc)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数据结构实训报告.doc

1、山东科技大学泰山科技学院课程实训说明书课程: 数据结构 系部名称: 信息工程系 专业班级: 电子信息科学与技术13-2学生姓名: 徐志宏 学 号: 201323010230 指 导 教 师: 亓静 学 校: 山东科技大学 2015年7月22日 指导教师对课程设计的评语课程设计成绩:教师评语: 指导教师(签字): 2013年 月 日目录第一章 课程设计性质与目的.4第二章 设计内容及基本要求.5第三章 详细设计说明.113.1 项目一.73.2 项目二.163.3 项目三.26第四章 实训总结.37附录 (参考文献、核心代码)第一章 课程设计性质与目的数据结构实训是信息管理与信息系统专业集中实践

2、性环节之一,其目的就是要达到理论与实际应用相结合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。链表和顺序表操作的设计目的: 1掌握线性表的在顺序结构和链式结构实现。 2掌握线性表在顺序结构和链式结构上的基本操作。二叉树操作的设计目的: 1掌握二叉树的概念和性。2. 掌握任意二叉树存储结构。 3掌握任意二叉树的基本操作。第二章 设计内容及基本要求一、实验实训的基本要求是:本实训面向应用,以解决实际问题为主。题目以选用学生相对比较熟悉的为宜,要求通过本实训,理解有关数据结构的基本概念、不同数据类型的存储和基本操作的算法实

3、现,理解数据类型的逻辑结构及物理存储结构, 通过自己设计,编程、调试、测试、能够基本掌握在不同存储结构下的算法实现及算法优化,树立并培养系统规范开发的理念。实训中学生要将相关课程中学到的知识、思想和理念尽量应用在实训中。结束后要按规定提交代码和各种文档。实训基本步骤:1. 选题设计的课题尽量结合教学、科研的实际课题,规模、大小适当,具有一定复杂度。应根据题目大小、难度确定是否分组,组内成员人数。2. 数据结构及算法设计根据需求分析,选择合理的数据结构及设计相应的算法。 3. 编码根据已设计的数据结构和算法,编写代码。4. 测试按照系统测试的原则、方法和步骤,对系统进行测试。测试中应形成测试报告

4、。5. 编写实训报告实训说明书,内容及要求如下:(1) 封面(2) 成绩评定(3) 目录(4) 说明书正文,主要内容包括:一、 设计题目 二、 运行环境(软、硬件环境) 三、 数据结构及算法设计的思想 四、 数据结构及算法设计五、 源代码 六、 运行结果分析 七、 实习总结(收获及体会)参考资料:附录(核心代码)。二、设计内容 项目一:顺序表操作1、设计目的 (1)掌握线性表的在顺序结构上的实现。 (2)掌握线性表在顺序结构上的基本操作2、设计内容和要求利用顺序表的插入运算建立顺序表,然后实现顺序表的查找、插入、删除、计数、输出、排序、逆置等运算(查找、插入、删除、查找、计数、输出、排序、逆置

5、要单独写成函数),并能在屏幕上输出操作前后的结果。 项目二:链表操作1、设计目的 (1)掌握线性表的在链式结构上的实现。 (2)掌握线性表在链式结构上的基本操作2、设计内容和要求利用链表的插入运算建立链表,然后实现链表的查找、插入、删除、计数、输出、排序、逆置等运算(查找、插入、删除、查找、计数、输出、排序、逆置要单独写成函数),并能在屏幕上输出操作前后的结果。 项目三:二叉树的基本操作1、设计目的(1)掌握二叉树的概念和性质 (2)掌握任意二叉树存储结构。 (3)掌握任意二叉树的基本操作。2、设计内容和要求(1)对任意给定的二叉树(顶点数自定)建立它的二叉链表存储结构,并利用栈的五种基本运算

6、(置空栈、进栈、出栈、取栈顶元素、判栈空)实现二叉树的先序、中序、后序三种遍历,输出三种遍历的结果。 (2) 求二叉树高度、结点数、度为1的结点数和叶子结点数。第三章 详细设计说明项目一:顺序表操作:考查知识点:(1)利用顺序表的插入运算建立顺序表;(2)实现顺序表的查找、插入、删除、计数、输出、排序、逆置等运算(查找、插入、删除、查找、计数、输出、排序、逆置要单独写成函数);(3)能够在屏幕上输出操作前后的结果。一、算法1. 创建:#define LIST_INIT_SIZE 100#define LISTINCREMENT 20typedf structElemType *elem;int

7、 length;int listsize;SqList;Status InitList.Sq(SqList&L)L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L.elem)exit(OVERFLOW); L.lengh=0;L.listsize=LIST_INIT_SIZE;return Ok;/InitList_Sq2.插入:Status ListInsert_Sq(SqList&L,int i,ElemType e)/插入if(iL.length+1)return ERROR;if(L.length=L.lists

8、ize)newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase)exit(OVERFLOW);L.elem=newbase;L.listsize+=LISTINCREMENT;q=&(L.elemi-1);/q指示插入位置for(p=&(L.elemL.length-1);p=q;-p)*(p+1)=*p;*q=e+L.length;return OK;/ListInsert_Sq3.删除:Status ListDelete_Sq(SqList &L,nt i,ElemT

9、ype&e)if(iL.length)return ERROR;p=&(L.elemi-1);e=*p;q=L.elem+L.length-1;/表尾元素的位置for(+p;p=q;+p)=*p;-L.length;/表长减1return OK;/ListDelete_Sq4.查找:Int LocateElem_Sq(SqList L,ElemType e, /查找Status(*compare)(ElemType,ElemType)i=1;p=L.elem;while(i=L.length&!(*compare)(*p+,e)+i;if(i=L.length) return i;else r

10、eturn 0;/LocateElem_Sq二、源代码#include #include #include #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int ElemType;#define LIST_INIT_SIZE 100#define LISTINCREMENT 20typedef struct ElemType *list;int length;int listsize;SqList

11、;int InitList_Sq(SqList &L) L.list = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType); if (!L.list) exit (OVERFLOW); / 存储分配失败int i,y; L.length = 0; L.listsize = LIST_INIT_SIZE; printf(请输入元素个数:);scanf(%d,&y);printf(请输入元素:n);for(i=0;iy;i+,L.length+)scanf(%d,&L.listi);for(i=0;iL.length;i+)printf(%d

12、 ,L.listi);printf(n); return OK; / InitList_Sq/*输出函数*void output_Sq(SqList &L) printf(输出顺序表n);for(int i=0;iL.length;i+) printf(%d ,L.listi);printf(n); /*插入*Status ListInsert_Sq(SqList &L) ElemType *q,*p,*newbase;int i,e;printf(请输入插入位置i:); scanf( %d,&i);if(i L.length + 1) return ERROR;if(L.length = L

13、.listsize)newbase = (ElemType *)realloc(L.list,(L.listsize + LISTINCREMENT) * sizeof(ElemType);if(!newbase)exit(OVERFLOW);L.list = newbase;L.listsize += LISTINCREMENT;q = &(L.listi-1); / q指示插入位置for (p = & (L.listL.length-1); p = q; -p)*(p+1) = *p; / 插入位置及之后的元素右移printf(输入插入数值e: );scanf(%d,&e);*q = e;

14、 +L.length; printf(输出插入之后的顺序表:);for( i=0;iL.length;i+) printf(%d ,L.listi);printf(n);return OK; / ListInsert_Sq/*删除*int ListDelete_Sq(SqList &L) ElemType *p,*q;int i,e;printf(请输入你要删除的元素位序:);scanf(%d,&i);if (i L.length) return ERROR; p = & (L.listi-1); e = *p; q = L.list + L.length - 1; / 表尾元素的位置prin

15、tf(删除的元素值为: %dn,e);for (+p; p = q; +p) *(p-1) = *p; -L.length; for( i=0;iL.length;i+) printf(%d ,L.listi);printf(n);return OK; / ListDelete_Sq /*查找* Status LocateElem_Sq(SqList L) int e,i;printf(请输入你要查找元素的数值: );scanf(%d,&e);printf(你要查找元素的位序为: );for(i=0;iL.length;i+)if(e=L.listi)printf(%d ,i+1);print

16、f(n);return 0; /*排序(由小到大)*void Print_Sq(SqList &L) int t;for(int j=0;jL.length-1;j+)for(int i=0;iL.listi+1)t=L.listi;L.listi=L.listi+1;L.listi+1=t;printf(输出排序(由小到大)表n);for(int i=0;iL.length;i+) printf(%d ,L.listi);printf(n);/*计数*void ListLength_Sq(SqList L) printf(输出表中元素个数n);printf(%dn,L.length);/*逆

17、置*void inverse_Sq(SqList &L) int t,i;for(i=0;i=L.length/2-1;i+)t=L.listi;L.listi=L.listL.length-i-1;L.listL.length-i-1=t;printf(输出逆置顺序表n);for( i=0;inext=NULL; /先建立一个带头结点的单链表for(i=n;i0;-i) p=(LinkList)malloc(sizeof(LNode);scanf(&p-data);p-next = L-next;L-next = p; /插入到表头/CreateList L2. 插入:Status List

18、Insert_L(LinkList &L,int i ,ElemType e) /插入p=L;j=0;while(p&jnext;+j;if(!p|ji)return ERROR;s=(LinkList)malloc(sizeof(LNode);s-data=e; s-next=p-next;p-next=s;return OK;3. 删除:Status ListDelete_L(LinkList &L,int &e) /删除j=0;p=L;while(p-next & jnext;+j;if(!(p-next)|ji-1)return ERROR;q=p-next;p-next=q-next

19、;e=q-data;free(q);return OK;/ListDelete_L4. 查找:Status GetElem_L(LinkList L,int i , ElemType &e) /查找p=L-next;j=1;while(p & jnext;j+;if(!p|j1)retun ERRORe=p-data;retun OK;/GetElem.L二、源代码#include#include#define OK 1#define ERROR 0typedef struct LNode int data;struct LNode * next;LNode, * LinkList;/逆序输入

20、n个元素的值,建立带头结点的单链线性表L。void CreateList_L(LinkList &L) int i,x;LNode *p=NULL;L=(LinkList)malloc(sizeof(LNode);/生成新的结点L-next=NULL; /先建立一个带头结点的单链表 printf(请输入结点个数:); scanf(%d,&x); printf(请输入各结点元素的值为:);for(i=x;i0;-i) /逆序输入x个元素的值 p=(LinkList)malloc(sizeof(LNode);scanf(%d,&p-data);p-next = L-next;L-next = p;

21、 /插入到表头p=L-next; /将p指向头结点 /输出已创建的链表printf(逆序输出链表为:n); while(p)printf(%d ,p-data);p=p-next;/*插入*int ListInsert_L(LinkList &L) LNode *p,*s;int j=0,e,i;p=L;printf(请输入所要插入的位置:);scanf(%d,&i);printf(请输入所要插入的数:);scanf(%d,&e);while(p&jnext;+j;if(!p|ji-1)printf(输入数据有误,请输入数值在1 - x+1之间输入);s=(LinkList)malloc(si

22、zeof(LNode);s-data=e; s-next=p-next;p-next=s;p=L -next;while(p)printf(%5d,p-data);p=p-next;printf(n);return OK; /*删除*int ListDelete_L(LinkList &L,int &e) LNode *p,*q;int i,j=0;p=L;printf(请输入要删除的第几个结点:); scanf(%d,&i);while(p-next & jnext;+j;if(!(p-next)|ji-1)printf(输入的数值错误或删除位置不合理);q=p-next;p-next=q-

23、next;e=q-data;free(q);/释放被删除结点printf(被删除结点的数值为: %dn,e);p=L -next;while(p)printf(%5d,p-data);p=p-next;printf(n);return OK; /*计数*void CountList_L(LinkList &L) int i=0;LNode *p=L-next;while(p)i+;p=p-next;printf(结点个数为:%dn,i); /*查找*int LocateElem_L(LinkList L) LinkList p=L;int i,j=0;printf(请输入要查找的数的序号:);

24、scanf(%d,&i);while(p & jnext;j+;if(j!=i|!p)printf(参数i错或单链表不存在);return(NULL);printf(你查找的第 %d 个结点的数值为 %dn,i,p-data);return OK;/*排序*void SortList_L(LinkList L) int i,j,t,k = 0;LNode *p = L-next,*q;while(p)k+;p=p-next;p=L-next; q=p-next; /初始化for(i=0;inext;for(j=0,p;jnext)q = p-next;if(p-data q-data) /升序

25、t=p-data;p-data=q-data;q-data=t;p=L-next;printf(输出升序的链表为:n);while(p)printf(%5d,p-data);p=p-next;printf(n); /*输出*void OutputList_L(LinkList L) LNode *p;p=L-next;while(p)printf(%5d,p-data);p=p-next;printf(n);/*逆置*int ReverseList_L(LinkList &L) LNode *p ,*q;p=L-next;q=p-next;L-next=NULL;while(p-next)p-

26、next=L-next; L-next=p; p=q;q=q-next;p-next=L-next;L-next=p;printf(逆置后的链表结果为:);for(p=L-next;p;p=p-next)printf(%d ,p-data);printf(n);return 0;/*主函数*int main()LinkList L=NULL;int i,e;printf(逆序输入创建一个链表并实现下列功能n);printf( 1. 创建 n);printf( 2. 插入 n);printf( 3. 删除 n);printf( 4. 计数 n);printf( 5. 查找 n);printf(

27、6. 排序 n);printf( 7. 输出 n);printf( 8. 逆置 n);for(;)printf(请在1-8功能中选择一个: );scanf(%d,&i);/*函数调用*switch(i)case 1:CreateList_L(L); break;case 2:ListInsert_L(L); break;case 3:ListDelete_L(L,e); break;case 4:CountList_L(L); break;case 5:LocateElem_L(L); break;case 6:SortList_L(L); break;case 7:OutputList_L(

28、L); break;case 8:ReverseList_L(L); break;default:printf(输入错误);printf(n);return 0;三、操作结果项目三:二叉树的操作:一、考查知识点:1.对任意给定的二叉树(顶点数自定)建立它的二叉链表存储结构; 2.利用栈的五种基本运算(置空栈、进栈、出栈、取栈顶元素、判栈空)实现二叉树的先序、中序、后序三种遍历,输出三种遍历的结果。 3. 求二叉树高度、结点数、度为1的结点数和叶子结点数。二、算法:1.创建二叉树:Status Createbitree(bitree &t) /功能1:构建二叉树的二叉链表scanf(& ch);

29、 /按先序遍历建立二叉树if(ch=)T=NULL;elseif(!(T=(BiTNde)malloc(sizeof(BiTNode)exit(OVERFLOW);T-data=ch;Createbitree(t-lchild);Createbitree(t-rchild);Return OK;/CreatBiTree2.先序遍历: Status PreOrderTraverse(Bitree T,Status(* visit)(TElemType)) /采用二叉链表存储结构,Visit是对数据元素操作的应用函数 if(T)if(Visist(T-data)if (PreOrderTraver

30、se(p-lchild,Visit);if PreOrderTraverse(p-rchild,Visit);return OK;return ERROR;elese returnOK; / PreOrderTraverse3.中序遍历:Status InOrderTraverse(Bitree T,Status(* Visit)(TElemType))InitStack(s);Push (S,T);While(!StackEmpty(s)While(GetTop(s,p)&p)Push(S,p-lchild);Pop(S,p);If(!StackEmpty(s)Pop(s,p);if (!V

31、isit(p-data)retu ERROR;Push(S,p-rchild);/if/WhileRetun OK;/ InOrderTraverse二、源代码#include#include#include#define true 1#define false 0#define ok 1#define error 0#define overflow -2typedef void status;typedef char BTtype;typedef char Stype;typedef struct BTnode /定义二叉树存储结构 BTtype data; struct BTnode *lc,*rc;BTnode,*BTtree;type

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服