数据结构顺序表课程设计报告书_第1页
数据结构顺序表课程设计报告书_第2页
数据结构顺序表课程设计报告书_第3页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告撰写要求一)纸与页面要求1 采用国际标准 A4 型打印纸或复印纸,纵向打印。2 封页和页面按照下面模板书写(正文为:小四宋体 1.5 倍行距)。 3图表及图表标题按照模板中的表示书写。二) 课设报告书的容应包括以下各个部分: (按照以下顺序装订)1. 封页( 见课设模版 )2、学术诚信声明,所有学生必须本人签字,否则教师拒绝给予成绩。2. 任务书 (学生教师均要签字 , 信息填写完整 )3. 课程设计总结及体会4. 目录5. 正文一般应包括以下容 :(1) 题目介绍和功能要求(或描述)课程设计任务的详细描述 ( 注意不能直接抄任务书 ), 将容做更详细的具体的分析与描述; ( 2)

2、 系统功能模块结构图绘制系统功能结构框图及主要模块的功能说明;( 3) 使用的数据结构的描述 : 数据结构设计及用法说明 ;( 4) 涉及到的函数的描述 ;( 5) 主要算法描述 ( 程序流程图 )(6) 给出程序测试 / 运行的结果 设计多组数据加以描述(包括输入数据和输出结果)( 7) 参考文献格式要求: 1 作者,等 . 书名. 出版地:,出版年6. 附录:程序清单 ( 应带有必要的注释 )航空航天大学课程设计报告课程设计名称:数据结构和算法课程设计课程设计题目:顺序表结构和算法院(系):计算机学院专业:网络工程班级:1434010401学号:143401040116姓名:汪敏新指导教师

3、:武卫东说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要 求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。扌旨导教师评语:学术诚信声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指 导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别 加以标注或致谢中所罗列的容以外,报告中不包含其他人己经发表或 撰写过的研究结果,也不包含其它教育使用过的材料。与我一同工作 的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示 了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环 节“不及格”和“重修或重做”的评分结

4、论并承担相关一切后果。本人签名:日期:年月日航空航天大学课程设计任务书课程设计名称XXXX课程设计专业学生班级学号题目名称起止日期年月日起至年月日止课设容和要求:参考资料:教研室审核意见:教研室主任签字:指导教师(签名)年月日学生(签名)年月日课程设计总结:课程设计课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识, 也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方 法和技巧。在设计过程中,和同学们相互探讨,相互学习,相互监督。我学会了 运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世,这次课程设计对我 来说受益良多。课程设计是我们专业课程知识综合应用的实践训

5、练,着是我们迈 向社会,从事职业工作前一个必不少的过程“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。我今天认真的进行课程设计, 学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基 础。由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找, 在用的时候难免出现这样那样的错误。如开始设计出来的菜单不是预想的那样, 而是总个窗中出现混乱。解决的这个问题的办法是调整。一个系统的菜单和提示 信息非常重要。如果没有这些用户根本不知道怎么用你设计的这个系统。在设计 的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示 信息这后,

6、调试过程完成的非常顺利。回顾起此次课程设计,至今我仍感慨颇多, 的确,从拿到题目到完成整个编程,从理论到实践,虽然只有几天,但可以学到 很多的东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没 有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的, 只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论 中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的 能力。在设计的过程中遇到问题,难免会遇到过各种各样的问题,同时在设计的 过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不 够牢固,比如说结构体通过这次课程

7、设计之后, 一定把以前所学过的知识都用上。本次课程设计结束了,对于我的影响很大。我通过这次实践学到了许多知识。 学到了设计一个简单的系统。要注意哪些方面。也使我知道自己哪些方面做得还 不够。目录学术诚信声明 I1问题分析和任务定义 11.1题目11.2 容12系统功能模块结构图 23数据结构设计及使用说明 33.1.1基本操作:3.2详细设计和编码.3.2.1类型定义3.2.2顺序表初始化3.2.3子函数输出函数4相关函数的描述3.1定义线性表抽象数据类型 33.444.474.1本函数包含的十个函数 7各函数之间的调用关系 84.2主函数的代码84.3用法说明95算法的程序流程图 106程序

8、测试结果 117参考文献 138附录(程序清单) 151问题分析和任务定义1.1题目顺序表结构和算法。1.2容1、设计出顺序表结构的相关函数库,以便在程序设计中调用。2、实现顺序表的各种基本函数以及常用函数。3、给出1-2个例子,通过调用自己的库函数来实现问题的求解。4、设计顺序表的相关函数,以便在程序调用中调用,进行顺序表中元素的插 入、查找、取出、删除等操作。1.3要求1、设计软件的系统功能模块及各模块的程序流程图。2、采用模块化编程,系统中的各项功能分别用函数编写。3、学生独立完成系统的设计,编码和调试工作并通过指导老师的检查。4、按课程设计规撰写课程设计报告。2系统功能模块结构图顺序表

9、IIJTmain函数部分图1-顺序表结构功能模块图3数据结构设计及使用说明3.1定义线性表抽象数据类型3.1.1基本操作:SqLset null (L)操作前提:L是一个未初始化的线性表操作结果:将L初始化为一个空的线性表操作前提:L是一个已初始化的空表操作结果:建立一个非空的线性表LSqLinsert (L,s,i)操作前提:线性表 L已存在操作结果:将元素s插入到线性表L的i位置SqLdelete (L,i)操作前提:线性表 L已存在操作结果:将线性表 L中i位置的元素删除,SqLlocate (L,x)操作前提:线性表 L已存在操作结果:在线性表L中查找元素x,若存在,返回元素在表中的序

10、号位置;若不存在,返回-1SqLle ngth_L(L)初始条件:线性表 L已存在操作结果:返回L中数据元素个数初始条件:线性表 L已存在操作结果:判断第i个数据元素值是否存在,存在则返回1否则,返回0;3.2详细设计和编码类型定义typedef struct Datatype datamaxle n;in t last;Sequenlist; /* 将data和len圭寸装成一个结构体*/顺序表初始化Sequenlist *SqLsetnull()Seque nlist *L;L=(Seque nlist*)malloc(sizeof(Seque nl ist);L->last=-1;

11、return(L);子函数输出函数void prin t(Seque nlist *L)int h;printf(”显示结果为:");for(h=0;h<L->last+1;h+)prin tf("%d "丄->datah);/*输出顺序表中所有元素*/prin tf("n");判表满int SqLempty(Seque nlist *L)if(L->last+1>=50)return(1);elsereturn(0);插入函数int SqLin sert(Seque nlist *L,Datatype s,i n

12、t i)int j;if(SqLempty(L)=1)printf("表满溢出 n");return(0);else if(i<1|i>L->last+2)prin tf("位置出错 n");return(0); elsefor(j=L->last;j>=i-1;j-)L->dataj+1=L->dataj;/*节点往后移动一个位置 */L->datai-1=s;/*插入新元素 s*/L->last+;/*last仍指向最后一个元素*/return (1);取数函数int SqLget(Seque n

13、list *L, int i)int x;if(i<1|i>L->last+1)printf("取数出错!");return (0);elsex=L->datai-1;return (1);更新函数int SqLupdate(Seque nlist *L,i nt i,i nt s)if(i<1|i>L->last+2)printf("位置出错 n");return(O);elseL->datai-1=s;return (1);其中用switch来做选择操作,从而实现个子函数对应的功能4相关函数的描述4.1

14、本函数包含的十个函数SqLset null printSqL in sert SqLupdate SqLdelete Delete_x SqLlocate SqLget Update_xSqLempty各函数之间的调用关系4.2主函数的代码mai n()说明一个单链表L ; 初始化L ;建立L ;显示L ;函数芦明血能芦明mlI)播入呼表中,若空间已却;入也舌;1左诺错否処Mg功oiet S吐dcLctuO冊谢阡际口的一沖科表F空尺冊除忖百不合法抵蜡.否!1田护彌九void SqLlorare0若査找兀索存在,则握同元葯序诩void print )输出1風粽中的俞有元鹭in i Sqrmpty

15、 QLat S<R#t(扌汗再宀置也取剪廉TvcLri tlprlntc tO莎兀希直応更祈探1vci ri reletf_it()査拥哦人的動f的劭愉删除翼恒删斜相同的散4.3用法说明程序执行后,首先输出:“请输入表长:” n输入表长后,输出:“请输入n个元素值:”输入n个元素值后,输出:“请选择:”任意选择指定操作的某一操作序号:如3“输入需要删除的元素”然后程序自动执行结果并显示出来 'C:Use rs>Ad minist ratorDe sk t op '秆崖丈件喪ebug4. exe"5素3432 d «.-8个元素 取兀草某兀一 改找

16、一有个55更更查找序所一 杳程请请请li:tz:郛f4:弭討 By gjBalo5算法的程序流程图结束图二-顺序表的程序流程图6程序测试结果执行情况如下:请正确输入 4个元素:12 3 4请选择:1 :显示所有元素2 :增加一个元素3 :按数值删除某个元素4 :按位置删除某个元素5 :按位置更新6 :按数值更新7 :按位置查找某元素8 :按值查找某元素9 :退出程序3需要删除的元素:4显示结果为:1 2 3测试结果如下图所示:2: 3勺 2U7素元素个-兀U素元1素取_帀素元素个兀書某某兀元改找一 有个期詈杳找序 主护;才二#E:S?1IH弯 天入择示岀显増请请请1;2;I § 入线

17、 插的图三插入一个数字兀元改我- 有个SO亠更杳找序 .所一 IBS查程 择出 选显増善请让2:主:出+峥图五更改一个数字34E67892需乙 入入1.素元素个-兀U -治元有个郡更更杳找序* :所一 一WH置嘗査程 灭择示值出 盪显增素元)_S 取元 个ff 1除;1臺图四 删除一个数字2 5 £ 718!. 32011.52014.47参考文献【1】严蔚敏、文博,数据结构应用算法教程【 M .北京:清华大学,【2】小莉、王淼、罗文劼,数据结构与算法【 M .北京:机械工业,8附录(程序清单)#i nclude<stdio.h>#in clude<stdlib.h

18、>typedef int Datatype;typedef struct Seque nlistDatatype data50;in t last;Seque nlist;Sequenlist *SqLsetnull()Seque nlist *L;L = (Seque nlist*)malloc(sizeof(Seque nlist);L->last = -1;return(L);void prin t(Seque nlist *L)int h;printf(”显示结果为:");for (h = 0; h<L->last + 1; h+)prin tf(&q

19、uot;%d "丄->datah);/*输出顺序表中所有元素*/prin tf("n");int SqLempty(Seque nlist *L)if (L->last + 1 >= 50)return(1);elsereturn(O);int SqLin sert(Seque nlist *L, Datatype s, int i)int j;if (SqLempty(L) = 1)printf(" 表满溢出 n");return(0);else if (i<1 | i>L->last + 2)printf

20、(" 位置出错 n");return(0);elsefor (j = L->last; j >= i - 1; j-)L->dataj + 1 = L->dataj;/*L->datai - 1 = s;/*L->last+;/*last*/return (1);int SqLdelete(Seque nlist *L, int i)int j;if (L->last<0)prin tf("顺序表空!");return(O);else if (i<1 | (i>L->last + 1) /

21、*节点往后移动一个位置*/插入新元素s*/仍指向最后一个元素检查空表及删除位置的合法性*/printf(" 参数出错!"); return(O);elsefor (j = i; j <= L->last + 1; j+)L->dataj - 1 = L->dataj;L->last-;return(1);int SqLupdate(Seque nlist *L, int i, i nt s)if (i<1 | i>L->last + 2)printf("位置出错 n");return(O);elseL-&g

22、t;datai - 1 = s;return (1);int SqLget(Seque nlist *L, int i)int x;if (i<1 | i>L->last + 1)prin tf(" 取数出错!"); return (0);elsex = L->datai - 1;return (1);void SqLlocate(Seque nlist *L, i nt x)int i, z = 0;for (i = 0; i<L->last + 1; i+)if (L->datai = x)printf(”该元素的位置为:%d&

23、quot;, i + 1);z = 1;if (z = 0)printf("不存在此元素!");void Delete_x(Seque nlist *L, i nt x)int j, k, z = 0;for (j = 0; j<L->last + 1; j+)if (L->dataj = x) 向前移动一个位置*/for (k = j; k<L->last + 1; k+)L->datak = L->datak + 1; /* L->last-;j-; /*返回到删除的位置*/z = 1;if (z = 0)printf(”

24、不存在此元素!");void Update_x(Seque nlist *L, int x)int j, k, z = 0, t = 1;for (j = 0; j<L->last + 1; j+)if (L->dataj = x)printf("将第c次出现的数4更改为:",t, x);sca nf("%d", & k);L->dataj = k;z = 1;t+;if (z = 0)printf("不存在此元素!");int mai n()Seque nlist *L;int i, j,

25、t, s, h, m, n, flag = 1;L = SqLset nu 11();while (flag) /*printf("使用标识flag*/请选择:n");prin tf("1:显示所有兀素n");prin tf("2:增加一个元素n");prin tf("3:按数值删除某个元素n");prin tf("4:按位置删除某元素n");prin tf("5:按位置更改n");prin tf("6:按数值更改n");prin tf("7:按

26、位置查找(取)元素n");prin tf("8:按值查找一个元素n");prin tf("9:退出程序n");/*显示选项*/确定表长*/输入表中元素*/输入顺序表元素之后 j时自动调用函数库中prin tf("请输入表长:");scanf("%d", &i); L->last = i - 1;prin tf("请输入d个元素值:",i);/*for (t = 0; t<i; t+)sca nf("%d", & L->datat);

27、/* sca nf("%d", &j);switch (j)/*当输入数字的函数实现功能*/case 1:pri nt(L); break; case 2:prin tf("输入需要插入的数值和位置:");sca nf("%d %d", &s, &i);h = SqL in sert(L, s, i);if (h)printf(”插入之后的线性表:");/*显示插入元素后的顺序表*/prin t(L);break;case 3:prin tf("输入需要删除的元素:");sca nf("%d", & s);Del

温馨提示

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

评论

0/150

提交评论