数据结构实训报告(共32页).doc
《数据结构实训报告(共32页).doc》由会员分享,可在线阅读,更多相关《数据结构实训报告(共32页).doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上山东科技大学泰山科技学院课程实训说明书课程: 数据结构 系部名称: 信息工程系 专业班级: 电子信息科学与技术13-2学生姓名: 徐志宏 学 号: 0 指 导 教 师: 亓静 学 校: 山东科技大学 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;i
7、nt 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.lis
8、tsize)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,Ele
9、mType&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
10、 return 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;SqLi
11、st;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(
12、%d ,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 =
13、 L.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 =
14、e; +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; / 表尾元素的位置pr
15、intf(删除的元素值为: %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);pri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 报告 32
限制150内