数据结构顺序表课程设计报告.docx

上传人:b****6 文档编号:12920905 上传时间:2023-06-09 格式:DOCX 页数:26 大小:184.21KB
下载 相关 举报
数据结构顺序表课程设计报告.docx_第1页
第1页 / 共26页
数据结构顺序表课程设计报告.docx_第2页
第2页 / 共26页
数据结构顺序表课程设计报告.docx_第3页
第3页 / 共26页
数据结构顺序表课程设计报告.docx_第4页
第4页 / 共26页
数据结构顺序表课程设计报告.docx_第5页
第5页 / 共26页
数据结构顺序表课程设计报告.docx_第6页
第6页 / 共26页
数据结构顺序表课程设计报告.docx_第7页
第7页 / 共26页
数据结构顺序表课程设计报告.docx_第8页
第8页 / 共26页
数据结构顺序表课程设计报告.docx_第9页
第9页 / 共26页
数据结构顺序表课程设计报告.docx_第10页
第10页 / 共26页
数据结构顺序表课程设计报告.docx_第11页
第11页 / 共26页
数据结构顺序表课程设计报告.docx_第12页
第12页 / 共26页
数据结构顺序表课程设计报告.docx_第13页
第13页 / 共26页
数据结构顺序表课程设计报告.docx_第14页
第14页 / 共26页
数据结构顺序表课程设计报告.docx_第15页
第15页 / 共26页
数据结构顺序表课程设计报告.docx_第16页
第16页 / 共26页
数据结构顺序表课程设计报告.docx_第17页
第17页 / 共26页
数据结构顺序表课程设计报告.docx_第18页
第18页 / 共26页
数据结构顺序表课程设计报告.docx_第19页
第19页 / 共26页
数据结构顺序表课程设计报告.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构顺序表课程设计报告.docx

《数据结构顺序表课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据结构顺序表课程设计报告.docx(26页珍藏版)》请在冰点文库上搜索。

数据结构顺序表课程设计报告.docx

数据结构顺序表课程设计报告

课程设计报告撰写要求

(一)纸张与页面要求

1.采用国际标准A4型打印纸或复印纸,纵向打印。

2.封页和页面按照下面模板书写(正文为:

小四宋体1.5倍行距)。

3.图表及图表标题按照模板中的表示书写。

(二)课设报告书的内容应包括以下各个部分:

(按照以下顺序装订)

1.封页(见课设模版)

2、学术诚信声明,所有学生必须本人签字,否则教师拒绝给予成绩。

2.任务书(学生教师均要签字,信息填写完整)

3.课程设计总结及体会

4.目录

5.正文一般应包括以下内容:

(1)题目介绍和功能要求(或描述)

课程设计任务的详细描述(注意不能直接抄任务书),将内容做更详细的具体的分析与描述;

(2)系统功能模块结构图

绘制系统功能结构框图及主要模块的功能说明;

(3)使用的数据结构的描述:

数据结构设计及用法说明;

(4)涉及到的函数的描述;

(5)主要算法描述(程序流程图)

(6)给出程序测试/运行的结果

设计多组数据加以描述(包括输入数据和输出结果)

(7)参考文献

格式要求:

[1]作者,等.书名.出版地:

出版社,出版年

6.附录:

程序清单(应带有必要的注释)

 

 

沈阳航空航天大学

 

课程设计报告

课程设计名称:

数据结构和算法课程设计

课程设计题目:

顺序表结构和算法

院(系):

计算机学院

专业:

网络工程

班级:

1434010401

学号:

143401040116

姓名:

汪敏新

指导教师:

武卫东

说明:

结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。

报告和电子数据必须作为实验现象重复的关键依据。

 

学术诚信声明

本人声明:

所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。

尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。

与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。

报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。

 

本人签名:

日期:

年月日

 

沈阳航空航天大学

课程设计任务书

课程设计名称

XXXX课程设计

专业

学生姓名

班级

学号

题目名称

起止日期

日起至

日止

课设内容和要求:

参考资料:

教研室审核意见:

教研室主任签字:

指导教师(签名)

学生(签名)

课程设计总结:

课程设计课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。

在设计过程中,和同学们相互探讨,相互学习,相互监督。

我学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世,这次课程设计对我来说受益良多。

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程“千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。

我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。

由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找,在用的时候难免出现这样那样的错误。

如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。

解决的这个问题的办法是调整。

一个系统的菜单和提示信息非常重要。

如果没有这些用户根本不知道怎么用你设计的这个系统。

在设计的调试过程中也无法顺利的完成调试工作。

有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。

回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,虽然只有几天,但可以学到很多的东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识都用上。

本次课程设计结束了,对于我的影响很大。

我通过这次实践学到了许多知识。

学到了设计一个简单的系统。

要注意哪些方面。

也使我知道自己哪些方面做得还不够。

 

1问题分析和任务定义

1.1题目

顺序表结构和算法。

1.2内容

1、设计出顺序表结构的相关函数库,以便在程序设计中调用。

2、实现顺序表的各种基本函数以及常用函数。

3、给出1-2个例子,通过调用自己的库函数来实现问题的求解。

4、设计顺序表的相关函数,以便在程序调用中调用,进行顺序表中元素的插

入、查找、取出、删除等操作。

1.3要求

1、设计软件的系统功能模块及各模块的程序流程图。

2、采用模块化编程,系统中的各项功能分别用函数编写。

3、学生独立完成系统的设计,编码和调试工作并通过指导老师的检查。

4、按课程设计规范撰写课程设计报告。

 

2系统功能模块结构图

图1-顺序表结构功能模块图

3数据结构设计及使用说明

3.1定义线性表抽象数据类型

3.1.1基本操作:

SqLsetnull(L)

操作前提:

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,i)

初始条件:

线性表L已存在

操作结果:

判断第i个数据元素值是否存在,存在则返回1;否则,返回0;

3.2详细设计和编码

3.2.1类型定义

typedefstruct

{Datatypedata[maxlen];

intlast;

}Sequenlist;/*将data和len封装成一个结构体*/

3.2.2顺序表初始化

Sequenlist*SqLsetnull()

{

Sequenlist*L;

L=(Sequenlist*)malloc(sizeof(Sequenlist));

L->last=-1;

return(L);

}

3.2.3子函数输出函数

voidprint(Sequenlist*L)

{

inth;

printf("显示结果为:

");

for(h=0;hlast+1;h++)

{

printf("%d",L->data[h]);

}/*输出顺序表中所有元素*/

printf("\n");

}

判表满

intSqLempty(Sequenlist*L)

{

if(L->last+1>=50)

return

(1);

else

return(0);

}

插入函数

intSqLinsert(Sequenlist*L,Datatypes,inti)

{

intj;

if(SqLempty(L)==1)

{

printf("表满溢出\n");

return(0);

}

elseif(i<1||i>L->last+2)

{

printf("位置出错\n");

return(0);

}

else

{

for(j=L->last;j>=i-1;j--)

L->data[j+1]=L->data[j];/*节点往后移动一个位置*/

L->data[i-1]=s;/*插入新元素s*/

L->last++;/*last仍指向最后一个元素*/

return

(1);

}

取数函数

intSqLget(Sequenlist*L,inti)

{

intx;

if(i<1||i>L->last+1)

{

printf("取数出错!

");

return(0);

}

else

x=L->data[i-1];

return

(1);

}

更新函数

intSqLupdate(Sequenlist*L,inti,ints)

{

if(i<1||i>L->last+2)

{

printf("位置出错\n");

return(0);

}

else

{

L->data[i-1]=s;

return

(1);

}

}

其中用switch来做选择操作,从而实现个子函数对应的功能。

 

4相关函数的描述

4.1本函数包含的十个函数

•主函数main()

•初始化顺序表函数SqLsetnull()

•显示顺序表内容函数print()

•插入元素函数SqLinsert()

•删除元素函数SqLdelete()

•查找元素函数SqLlocate()

•取值函数SqLget()

•判表满

4.1.1各函数之间的调用关系

 

4.2主函数的代码

main()

{说明一个单链表L;

初始化L;

建立L;

显示L;

}

4.3用法说明

程序执行后,首先输出:

“请输入表长:

”n

输入表长后,输出:

“请输入n个元素值:

输入n个元素值后,输出:

“请选择:

任意选择指定操作的某一操作序号:

如3

“输入需要删除的元素”

然后程序自动执行结果并显示出来

 

5算法的程序流程图

 

图二-顺序表的程序流程图

 

6程序测试结果

执行情况如下:

请正确输入4个元素:

1234

请选择:

1:

显示所有元素

2:

增加一个元素

3:

按数值删除某个元素

4:

按位置删除某个元素

5:

按位置更新

6:

按数值更新

7:

按位置查找某元素

8:

按值查找某元素

9:

退出程序

3

需要删除的元素:

4

显示结果为:

123

测试结果如下图所示:

图三插入一个数字

图四删除一个数字图五更改一个数字

 

7参考文献

【1】严蔚敏、陈文博,数据结构应用算法教程【M】.北京:

清华大学出版社,2011.5

【2】张小莉、王淼、罗文劼,数据结构与算法【M】.北京:

机械工业出版社,2014.4

 

8附录(程序清单)

#include

#include

typedefintDatatype;

typedefstructSequenlist

{

Datatypedata[50];

intlast;

}Sequenlist;

Sequenlist*SqLsetnull()

{

Sequenlist*L;

L=(Sequenlist*)malloc(sizeof(Sequenlist));

L->last=-1;

return(L);

}

voidprint(Sequenlist*L)

{

inth;

printf("显示结果为:

");

for(h=0;hlast+1;h++)

{

printf("%d",L->data[h]);

}/*输出顺序表中所有元素*/

printf("\n");

}

intSqLempty(Sequenlist*L)

{

if(L->last+1>=50)

return

(1);

else

return(0);

}

intSqLinsert(Sequenlist*L,Datatypes,inti)

{

intj;

if(SqLempty(L)==1)

{

printf("表满溢出\n");

return(0);

}

elseif(i<1||i>L->last+2)

{

printf("位置出错\n");

return(0);

}

else

{

for(j=L->last;j>=i-1;j--)

L->data[j+1]=L->data[j];/*节点往后移动一个位置*/

L->data[i-1]=s;/*插入新元素s*/

L->last++;/*last仍指向最后一个元素*/

return

(1);

}

}

intSqLdelete(Sequenlist*L,inti)

{

intj;

if(L->last<0)

{

printf("顺序表空!

");

return(0);

}

elseif(i<1||(i>L->last+1))/*检查空表及删除位置的合法性*/

{

printf("参数出错!

");

return(0);

}

else

{

for(j=i;j<=L->last+1;j++)

L->data[j-1]=L->data[j];

L->last--;

return

(1);

}

}

intSqLupdate(Sequenlist*L,inti,ints)

{

if(i<1||i>L->last+2)

{

printf("位置出错\n");

return(0);

}

else

{

L->data[i-1]=s;

return

(1);

}

}

intSqLget(Sequenlist*L,inti)

{

intx;

if(i<1||i>L->last+1)

{

printf("取数出错!

");

return(0);

}

else

x=L->data[i-1];

return

(1);

}

voidSqLlocate(Sequenlist*L,intx)

{

inti,z=0;

for(i=0;ilast+1;i++)

{

if(L->data[i]==x)

{

printf("该元素的位置为:

%d",i+1);

z=1;

}

}

if(z==0)

printf("不存在此元素!

");

}

voidDelete_x(Sequenlist*L,intx)

{

intj,k,z=0;

for(j=0;jlast+1;j++){

if(L->data[j]==x){

for(k=j;klast+1;k++){

L->data[k]=L->data[k+1];/*向前移动一个位置*/

}

L->last--;

j--;/*返回到删除的位置*/

z=1;

}

}

if(z==0)

printf("不存在此元素!

");

}

voidUpdate_x(Sequenlist*L,intx)

{

intj,k,z=0,t=1;

for(j=0;jlast+1;j++)

{

if(L->data[j]==x)

{

printf("将第%d次出现的数%d更改为:

",t,x);

scanf("%d",&k);

L->data[j]=k;

z=1;

t++;

}

}

if(z==0)

printf("不存在此元素!

");

}

intmain()

{

Sequenlist*L;

inti,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

scanf("%d",&L->data[t]);/*输入表中元素*/

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");

printf("8:

按值查找一个元素\n");

printf("9:

退出程序\n");/*输入顺序表元素之后显示选项*/

scanf("%d",&j);

switch(j)/*当输入数字j时自动调用函数库中的函数实现功能*/

{

case1:

{print(L);break;}

case2:

{

printf("输入需要插入的数值和位置:

");

scanf("%d%d",&s,&i);

h=SqLinsert(L,s,i);

if(h)

{

printf("插入之后的线性表:

");/*显示插入元素后的顺序表*/

print(L);

}

break;

}

case3:

{

printf("输入需要删除的元素:

");

scanf("%d",&s);

Delete_x(L,s);/*显示删除元素后的顺序表*/

print(L);

break;

}

case4:

{

printf("输入需要删除的数值位置:

");

scanf("%d",&s);

h=SqLdelete(L,s);

printf("\n");

if(h)

{

printf("删除之后的线性表:

\n");/*显示删除元素后的顺序表*/

print(L);

}

break;

}

case5:

{

printf("输入需要更改的位置和更改后的数据:

");

scanf("%d%d",&m,&n);

h=SqLupdate(L,m,n);

if(h)

{

printf("插入之后的线性表:

");/*显示更新元素后的顺序表*/

print(L);

}

break;

}

case6:

{

printf("输入需要更改的数");

scanf("%d",&m);

Update_x(L,m);

print(L);

break;

}

case7:

{

printf("取出第n个元素:

");

scanf("%d",&i);

h=SqLget(L,i);

if(h)

{

printf("所取的数据元素为:

");

printf("%d\n",L->data[i-1]);/*输出所取元素*/

}

else

printf("输入序号超出范围!

\n");/*输入不合法报错*/

break;

}

case8:

{

printf("输入需要查找的数值:

");

scanf("%d",&s);

SqLlocate(L,s);

printf("\n");

break;

}

case9:

flag=0;

printf("程序结束,按任意键退出!

\n");

}

}

return0;

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2