数据结构顺序表课程设计资料_第1页
数据结构顺序表课程设计资料_第2页
数据结构顺序表课程设计资料_第3页
数据结构顺序表课程设计资料_第4页
数据结构顺序表课程设计资料_第5页
已阅读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学 号: 姓 名: 汪敏新指导教师: 武卫东说明:结论(优秀、良好、中等、及

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

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

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

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

7、大。我通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我知道自己哪些方面做得还不够。目 录 目录学术诚信声明I1 问题分析和任务定义11.1题目11.2内容12系统功能模块结构图23数据结构设计及使用说明33.1 定义线性表抽象数据类型3基本操作:33.2详细设计和编码4类型定义43.2.2顺序表初始化4子函数输出函数44 相关函数的描述64.1 本函数包含的十个函数6各函数之间的调用关系64.2主函数的代码74.3用法说明75算法的程序流程图86程序测试结果97参考文献118附录(程序清单)122 1 问题分析和任务定义1.1题目顺序表结构和算法。1.2内容1、设计

8、出顺序表结构的相关函数库,以便在程序设计中调用。2、实现顺序表的各种基本函数以及常用函数。3、给出1-2个例子,通过调用自己的库函数来实现问题的求解。4、设计顺序表的相关函数,以便在程序调用中调用,进行顺序表中元素的插入、查找、取出、删除等操作。1.3要求1、设计软件的系统功能模块及各模块的程序流程图。2、采用模块化编程,系统中的各项功能分别用函数编写。3、学生独立完成系统的设计,编码和调试工作并通过指导老师的检查。4、按课程设计规范撰写课程设计报告。 2系统功能模块结构图 图1-顺序表结构功能模块图3数据结构设计及使用说明3.1 定义线性表抽象数据类型基本操作: SqLsetnull (L)

9、 操作前提:L是一个未初始化的线性表 操作结果:将L初始化为一个空的线性表 操作前提:L是一个已初始化的空表 操作结果:建立一个非空的线性表L SqLinsert (L,s,i) 操作前提:线性表L已存在 操作结果:将元素s插入到线性表L的i位置 SqLdelete (L,i) 操作前提:线性表L已存在 操作结果:将线性表L中i位置的元素删除, SqLlocate (L,x) 操作前提:线性表L已存在 操作结果:在线性表L中查找元素x,若存在,返回元素在表中的序号位置;若不存在,返回-1 SqLlength_L(L) 初始条件:线性表L已存在 操作结果:返回L中数据元素个数 SqLget (L

10、,i) 初始条件:线性表L已存在 操作结果:判断第i个数据元素值是否存在,存在则返回1;否则,返回0; 3.2详细设计和编码3.2.1类型定义typedef struct Datatype datamaxlen; int last;Sequenlist; /*将data和len封装成一个结构体*/3.2.2顺序表初始化Sequenlist *SqLsetnull()Sequenlist *L;L=(Sequenlist*)malloc(sizeof(Sequenlist); L->last=-1; return(L);3.2.3子函数输出函数void print(Sequenlist *

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

12、("表满溢出n");return(0);else if(i<1|i>L->last+2)printf("位置出错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(Sequenlist *L, int i)int x;if(i<1|i&

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

14、LupdateSqLdeleteDelete_xSqLlocateSqLgetUpdate_xSqLempty4.1 本函数包含的十个函数 主函数main() 初始化顺序表函数SqLsetnull () 显示顺序表内容函数print() 插入元素函数SqLinsert () 删除元素函数SqLdelete () 查找元素函数SqLlocate () 取值函数SqLget () 判表满4.1.1各函数之间的调用关系4.2主函数的代码main() 说明一个单链表 L ;初始化 L ; 建立 L ; 显示 L ;4.3用法说明程序执行后,首先输出:“请输入表长:”n输入表长后,输出:“请输入n个元素

15、值:”输入n个元素值后,输出:“请选择:”任意选择指定操作的某一操作序号:如3“输入需要删除的元素”然后程序自动执行结果并显示出来5算法的程序流程图 图二-顺序表的程序流程图6程序测试结果执行情况如下:请正确输入4个元素:1 2 3 4 请选择: 1:显示所有元素 2:增加一个元素 3:按数值删除某个元素 4:按位置删除某个元素 5:按位置更新 6:按数值更新 7:按位置查找某元素 8:按值查找某元素 9:退出程序 3 需要删除的元素:4 显示结果为:1 2 3 测试结果如下图所示: 图三 插入一个数字 图四 删除一个数字 图五 更改一个数字7参考文献【1】严蔚敏、陈文博,数据结构应用算法教程

16、【M】.北京:清华大学出版社,2011.5【2】张小莉、王淼、罗文劼,数据结构与算法【M】.北京:机械工业出版社,2014.48附录(程序清单)#include<stdio.h>#include<stdlib.h>typedef int Datatype;typedef struct SequenlistDatatype data50;int last;Sequenlist;Sequenlist *SqLsetnull()Sequenlist *L;L = (Sequenlist*)malloc(sizeof(Sequenlist);L->last = -1;re

17、turn(L);void print(Sequenlist *L)int h;printf("显示结果为: ");for (h = 0; h<L->last + 1; h+)printf("%d ", L->datah);/*输出顺序表中所有元素*/printf("n");int SqLempty(Sequenlist *L)if (L->last + 1 >= 50)return(1);elsereturn(0);int SqLinsert(Sequenlist *L, Datatype s, int

18、i)int j;if (SqLempty(L) = 1)printf("表满溢出n");return(0);else if (i<1 | i>L->last + 2)printf("位置出错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); in

19、t SqLdelete(Sequenlist *L, int i)int j;if (L->last<0)printf("顺序表空!");return(0);else if (i<1 | (i>L->last + 1) /*检查空表及删除位置的合法性*/printf("参数出错!");return(0);elsefor (j = i; j <= L->last + 1; j+)L->dataj - 1 = L->dataj;L->last-;return(1);int SqLupdate(Seq

20、uenlist *L, int i, int s)if (i<1 | i>L->last + 2)printf("位置出错n");return(0);elseL->datai - 1 = s;return (1);int SqLget(Sequenlist *L, int i)int x;if (i<1 | i>L->last + 1)printf("取数出错!");return (0);elsex = L->datai - 1;return (1);void SqLlocate(Sequenlist *L

21、, int x)int i, z = 0;for (i = 0; i<L->last + 1; i+)if (L->datai = x)printf("该元素的位置为:%d", i + 1);z = 1;if (z = 0)printf("不存在此元素!");void Delete_x(Sequenlist *L, int 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;

22、k+)L->datak = L->datak + 1; /*向前移动一个位置*/L->last-;j-; /*返回到删除的位置*/z = 1;if (z = 0)printf("不存在此元素!");void Update_x(Sequenlist *L, int x)int j, k, z = 0, t = 1;for (j = 0; j<L->last + 1; j+)if (L->dataj = x)printf("将第%d次出现的数%d更改为:", t, x);scanf("%d", &

23、;k);L->dataj = k;z = 1;t+;if (z = 0)printf("不存在此元素!");int main()Sequenlist *L;int i, j, t, s, h, m, n, flag = 1;L = SqLsetnull();printf("请输入表长:");scanf("%d", &i); L->last = i - 1;printf("请输入%d个元素值:", i); /*确定表长*/for (t = 0; t<i; t+)scanf("%d&

24、quot;, &L->datat); /*输入表中元素*/while (flag) /*使用标识flag*/printf("请选择:n");printf("1:显示所有元素n");printf("2:增加一个元素n");printf("3:按数值删除某个元素n");printf("4:按位置删除某元素n");printf("5:按位置更改n");printf("6:按数值更改n");printf("7:按位置查找(取)元素n&quo

25、t;);printf("8:按值查找一个元素n");printf("9:退出程序n"); /*输入顺序表元素之后显示选项*/scanf("%d", &j);switch (j) /*当输入数字j时自动调用函数库中的函数实现功能*/case 1:print(L); break; case 2:printf("输入需要插入的数值和位置:");scanf("%d %d", &s, &i);h = SqLinsert(L, s, i);if (h)printf("插入之后的线性表:"); /*显示插入元素后的顺序表*/print(L);break;case 3:printf("输入需要删除的元素:");scanf("%d", &s);Delete_x(L, s); /*显示删除元素后的顺序表*/print(L);bre

温馨提示

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

评论

0/150

提交评论