数据结构顺序表的实现的课程设计报告(共11页).doc

上传人:飞****2 文档编号:15096892 上传时间:2022-05-10 格式:DOC 页数:11 大小:153KB
返回 下载 相关 举报
数据结构顺序表的实现的课程设计报告(共11页).doc_第1页
第1页 / 共11页
数据结构顺序表的实现的课程设计报告(共11页).doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《数据结构顺序表的实现的课程设计报告(共11页).doc》由会员分享,可在线阅读,更多相关《数据结构顺序表的实现的课程设计报告(共11页).doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上前言1.1设计背景和意义1.1.1数据结构简介 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。1.1.2选择算法的原因在许多类型的程序的设计中数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适

2、的数据结构都是非常重要的。1.2设计的原理线性表是最常用的而且也是最简单的一种数据结构,线性表是N个数据元素的有限序列。例如26个英文元素的字母表:(A,B,C,D,)。其数据结构的描述为:Linear list=(D,R)其中:D=ai|ai属于D0,i=1,2,3,R=N,N=|i=2,3,4,。本实验是以数组的形式把有序表存放在计算机内存的一个连续的区域内,这样便有:LOC(ai+1)=LOC(ai)+m。其中m是存放每个元素所占的内存字数。LOC(ai)=LO+m(i-1)。其中LO是ai的地址,即首地址。工程概况2.1 项目所用的时间从这个项目开始到结束总共历时7天。完成于2011年

3、12月18日。2.2项目负责人李欢,男,计算机科学与技术14-4,学生。2.3项目指导人朱赖红,男,信息工程学院教师,讲师。正文顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中3.1 设计的目的和意义我们是计算机科学与技术专业的本科生,数据结构是我们重要的必修课程。当代社会学要大学培养出理论扎实,动手实践能力强的大学生。所以,本次课程设计的目的就在于通过一次实践性的活动加深对这门课程的理解,使我们在感性的认识上进一步升华为理性的认

4、识。为后继课程的学习打下坚实的基础。马克思主义唯物辩证法认为,实践是连接客观实在和人主观意识的通道和桥梁。物质对意识的作用以及意识对物质的反作用都蕴含在实践活动当中。也就是,实践是检验真理的唯一标准。对这门课的学习状况的好坏,用一次课程设计便可以检验出来。而这,就是本次我们进行设计的意义之所在。3.2 目的和总体方案顺序表存储位置是相邻连续的,可以随即访问的一种数据结构,一个顺序表在使用前必须指定起长度,一旦分配内存,则在使用中不可以动态的更改。他的优点是访问数据是比较方便,可以随即的访问表中的任何一个数据。目的:1、理解和掌握顺序表的结构类型定义方法。2、掌握建立顺序表的基本方法。3、掌握显

5、示顺序表元素的基本方法。由于时间只有十天,故做了如下的计划安排,将这项工程分为两大部分:程序的设计和程序的调试。首先在程序的设计部分由分为几个步骤:第一步:查阅有关数据结构顺序表操作的资料,用一天的时间。第二步:设计这个项目的整体架构和算法。用一到两天的时间。第三步:选择一门程序设计语言进行算法的描述。两天的时间。其次,进行程序的调试。用一天。3.3 设计方法和内容“工欲善其事,必先利其器”。有了总体方案后必须用一个事半功倍的设计方法来提高程序设计的效率。在这个项目的设计上,我选择了语言作为算法的描述语言,因为语言具有丰富的表达能力以及代码的高效性,并且有着良好的移植性和灵活性。同时,采用“自

6、顶向下,个个击破”的程序设计思路和思想,充分运用语言强大的功能。我将这个项目整体设分成了两个模块。一个是功能函数模块群,主要实现设计方案中的具体功能,是整个项目的执行部分;另一个是主函数模块,主要实现对数据流和控制流的控制,使整个项目的控制部分。这两大模块有机的结合共同构成了这个项目的全部面貌。3.3.1 硬件环境微型计算机:联想台式品牌机中央处理器:Pentuim 4 主频:3.0GHz主存容量: 512M硬盘容量: 80G3.3.2软件环境Windows XP 操作系统Microsoft NotePad 记事本程序Microsoft Visual C+编译器3.3.3 设计流程图开始顺序表

7、元素的插入元素的检索删除一个元素输出表和读表建立表长为7的顺序表SWICH语句图3-1 程序流程图3.3.4设计内容一、程序设计的基本算法介绍1、顺序表的存储特点是:只要确定了起始位置,表中任一元素的地址都通过下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1in 其中,L是元素占用存储单元的长度。3.4 程序的设计思想和内容1 顺序实现设计思路:我没有直接用数组的存储方式,而是采用连续分配内存的方式或者说我把数组实现的代码写了出来,没有直接用库里面的数组形式。每次分配的数量为常量LISTINCREASMENT。程序流程:新建一个顺序表(初始表长为7)显示构建的表及表长依次检验删

8、除,插入检索功能并显示操作后的顺序表3.4.1程序设计的初始运行环境这个项目是由主函数模块和功能函数模块组成的。其中主函数模块是项目的控制部分,很重要的一个作用就是对整个程序的初始化功能。在设计初始运行环境时,为了每一次栈操作后都可以进行对程序的初始化,采用了dowhile循环语句构成一个无限循环,使得每一次栈操作之后都可以将程序初始化重新选择对栈的另一个操作,例如:选择2,将若干个数据压入栈中之后,程序便又回到了初始的界面,我们可以选择4进行出栈操作。代码如下:#include #include #include #include #include#defineLISTINCREASMENT

9、 2#define LISTSIZE 5typedef int ElemType;typedef structElemType * elem;int length;int listsize; Sqlist;void SqInitial(Sqlist *ps) ps-elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType); ps-length=0; ps-listsize=LISTSIZE;void ListInsert(Sqlist *ps,int i,ElemType e) if(ilength=ps-listsize) ElemType*ne

10、wbase=(ElemType*)realloc(ps-elem,(ps-listsize+LISTINCREASMENT)*sizeof(ElemType); ps-elem=newbase; ps-listsize+=LISTINCREASMENT; ElemType * q=&(ps-elemi-1);ElemType * p;for(p=&(ps-elemps-length-1);p=q;-p) *(p+1)=*p;*q=e;+ps-length;void ListDelete(Sqlist *ps,int i,ElemType e) if(ips-length) printf(ERR

11、OR!); ElemType * p=&(ps-elemi-1); e=*p; ElemType * q=ps-length+ps-elem-1;for(+p;plength;ElemType GetElem(Sqlist *ps,int i) if(ips-length) printf(ERROR!); return ps-elemi-1;void main()Sqlist *L; int t =1 ,d; L=new Sqlist; SqInitial(L); printf(构建长度为7的顺序表。n); for(t=1;tlength);for(t=1;tlength;t+)printf(

12、 %d ,L-elemt-1);printf(n删除的位置:);scanf(%d,&t); ListDelete(L,t,d);printf( 删除元素的值:%dn,d);printf( 删除后的表:);for(t=1;tlength;t+)printf( %d ,L-elemt-1);printf(n要插入的位置); scanf(%d,&t); printf(要插入的值); scanf(%d,&d); ListInsert(L,t,d);printf( 插入以后的表:); for(t=1;tlength;t+)printf( %d ,L-elemt-1);printf(n要检索的元素的位置:

13、);scanf(%d,&t); d=GetElem(L,t);printf( 该元素的值为:%dn,d); 具体运行截面如下图:图3-2 界面的循环初始化3.4.2顺序表的初始化具体代码如下:void SqInitial(Sqlist *ps) ps-elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType); ps-length=0; ps-listsize=LISTSIZE;3.4.3顺序表的插入构建长度为7的顺序表具体程序代码及运行后的界面如下:void main()Sqlist *L; int t =1 ,d; L=new Sqlist; S

14、qInitial(L); printf(构建长度为7的顺序表。n); for(t=1;tlength); for(t=1;tlength;t+)printf( %d ,L-elemt-1);图为两个数据的运行结果:图3-4 栈元素的删除操作。 3.4.顺序表的删除操作顺序表的删除的具体代码如下:printf(n删除的位置:);scanf(%d,&t); ListDelete(L,t,d);printf( 删除元素的值:%dn,d);printf( 删除后的表:);for(t=1;tlength;t+)printf( %d ,L-elemt-1); 图为删除元素与删除后的运行结果:3.5.元素的

15、插入具体代码如下:printf(n要插入的位置); scanf(%d,&t); printf(要插入的值); scanf(%d,&d); ListInsert(L,t,d);printf( 插入以后的表:); for(t=1;tlength;t+) printf( %d ,L-elemt-1);图为元素插入以及插入后的表:3.6.检索元素检索元素的具体代码如下:printf(n要检索的元素的位置:);scanf(%d,&t); d=GetElem(L,t);printf( 该元素的值为:%dn,d); 图为检索元素后的运行:图3-5 出栈操作3.5 设计创新与关键技术这个课程设计是一个简单的设

16、计,如果说有“设计创新与关键技术”的话,只能勉强说有设计创新,至于关键技术应该谈不上。谈到设计创新,只能说在设计思路、设计方法和设计内容上有别人没有的东西。而所用的技术倒是没有多少。主要是运用了C语言丰富的表达能力,将栈的建立、进栈、出栈等操作形象的反应出来。3.6结论本次设计进展顺利,如期完成,并且达到了预先的设计要求,完全贯彻和执行了设计的总体方案。对于栈的基本操作的描述和实现比较成功。然而,限于时间和水平,这个设计还有很多的不足之处。3.6.1存在的问题 一、没有使用图形的形式描述栈的操作。主要是因为本设计主要是在MicroSoft Visual C+编译器调试,但VC的根目录下的Inc

17、lude文件夹中没有graphics.h这个头文件。因此,在Turbo C下编译成功的地源程序在VC中无法编译通过。二、所有的对栈的操作只能当栈被初始化以后方可进行。当栈被一次初始化后,所有的进栈操作只能进行一次,如果想在进行了其他的栈操作后再次进栈是不行的。3.6.2解决方案一、针对VC中没有graphics.h头文件的问题,可以到互联网上求助高手或自己到图书馆查阅相关的书籍。二、针对进栈要等待初始化的问题,原因在于经过其他的栈操作改变了栈顶指针的位置,而第一次进栈是在空栈的基础之上,而有了数据再想进栈便违反了栈“先进后出”的原则了。可以进行如下操作,将栈的结构体中的栈顶指针定义为一个全局变

18、量或静态变量。这样,便可以保证进栈的不受限制,可随时进栈。参考文献1严蔚敏.吴伟民编著.数据结构(C语言版).清华大学出版社.20062李春葆.曾慧.张植民编著.数据结构程序设计题典.清华大学出版社.20023郭翠英等编著.C语言课程设计案例精编.中国水利水电出版社.20044谭浩强编著.C程序设计.清华大学出版社.20055William Ford.William Topp.Data Structure with C+. 清华大学出版社6许卓群.张乃孝.杨冬青.唐世渭数据结构.高等教育出版社.1988年 7李廉治.姜文清.郭福顺数据结构.大连理工大学出版社.1989年8晋良颍数据结构.人民邮电出版社.2002年专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁