您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数据结构实验报告示例
《数据结构》实验报告班级:_________姓名:_______学号:_________电话___________日期:________◎实验题目:给定(也可自己定相关内容)◎实验目的:给定(也可自己定相关内容)◎实验内容:给定(也可自己定相关内容)一、需求分析说明程序设计的任务,强调的是程序要做什么,明确规定:1、输入的形式和输入值的范围;2、输出的形式;3、程序所能达到的功能;4、测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。二概要设计说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。三详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法;画出函数的调用关系。四使用说明、测试分析及结果1、说明如何使用你编写的程序;2、测试结果与分析;3、调试过程中遇到的问题是如何解决提以及对设计与实现的回顾讨论和分析;4、运行界面。五、实验总结1、算法的时空分析和改进设想等等,见示例。}示例:(一)需求分析1.本演示程序中,人数n应为任意的,首先应输入一个值赋给初始报数上限m,程序应能自动保存出列人的序号和将出列的人所持的密码赋给m,再次作为报数上限,如此循环,直至所有人都出列为止。2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入相应数据(即每个人所持的密码),每个人的序号由程序自动分配。3.程序执行的命令包括:(1)构造链表;(2)输入数据;(3)执行报数,储存出列人的序号,删除出列人的信息以及把出列人的密码赋给m;(4)结束。4.测试数据(1)n=7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6,则这正确的出列顺序为6,1,4,7,2,3,5。(二)概要设计为了实现上述操作,应以单向循环链表为存储结构。1.基本操作:new_code()操作结果:构造空链表,若成功就初始化每个人的相关信息delete_code()初始条件:线性链表存在操作结果:释放指向出列的人的结点,并重新报数2.本程序包含三个模块:(1)主程序模块;(2)构造链表并输入每个人信息模块;(3)释放结点模块;(4)模块调用图:主程序模块构造链表并输入每个人信息模块释放结点模块(三)详细设计1.元素类型,结点类型和指针类型:typedefintElemType;typedefstructLNode{intnum;ElemTypedata;structLNode*next;}LNode;LNode*head;*this;*new;2.每个模块的分析:(1)主程序模块:main(){intm,n,i;printf(Enterthefirstcode(m):);scanf(%d,&m);printf(\nEnterthepeoplenumber(n):);scanf(%d,&n);getchar();printf(\n);new_code(n);if(head!=NULL)delete_code(n,m);else{printf(listisempty\n);exit();}for(i=0;in;i++)printf(%-3d,str[i]);printf(\n);}(2)构造链表并输入每个人信息模块;new_code(inta){inti=1;charnumstr[10];new=(LNode*)malloc(sizeof(LNode));if(new==NULL)returnERROR;if(head==NULL)head=new;this=head;while(--a!=0){this-num=i;printf(enterthe%dcode(data):,i);gets(numstr);this-data=atoi(numstr);new=(LNode*)malloc(sizeof(LNode));this-next=new;this=new;i++;}this-num=i;printf(enterthe%dcode(data):,i);gets(numstr);this-data=atoi(numstr);this-next=head;returnOK;}(3)释放结点模块delete_code(inta,intb){inti;intj=0;LNode*p;while((a--)!=1){for(i=1;i=b;i++){p=this;this=this-next;}b=this-data;str[j]=this-num;p-next=this-next;free(this);j++;}str[j]=this-next-num;returnOK;}(4)函数调用关系图main()new_code()delete_code()3.完整的程序:#includemalloc.h#includestdio.h#defineMAX100#defineERROR0#defineOK0typedefintElemType;typedefstructLNode{intnum;ElemTypedata;structLNode*next;}LNode;LNode*head,*this,*new;intstr[MAX];new_code(inta);delete_code(inta,intb);main(){intm,n,i;printf(Enterthefirstcode(m):);scanf(%d,&m);printf(\nEnterthepeoplenumber(n):);scanf(%d,&n);getchar();printf(\n);new_code(n);if(head!=NULL)delete_code(n,m);else{printf(listisempty\n);exit();}for(i=0;in;i++)printf(%-3d,str[i]);printf(\n);}new_code(inta){inti=1;charnumstr[10];new=(LNode*)malloc(sizeof(LNode));if(new==NULL)returnERROR;if(head==NULL)head=new;this=head;while(--a!=0){this-num=i;printf(enterthe%dcode(data):,i);gets(numstr);this-data=atoi(numstr);new=(LNode*)malloc(sizeof(LNode));this-next=new;this=new;i++;}this-num=i;printf(enterthe%dcode(data):,i);gets(numstr);this-data=atoi(numstr);this-next=head;returnOK;}delete_code(inta,intb){inti;intj=0;LNode*p;while((a--)!=1){for(i=1;i=b;i++){p=this;this=this-next;}b=this-data;str[j]=this-num;p-next=this-next;free(this);j++;}str[j]=this-next-num;returnOK;}(四)程序使用说明及测试结果1.程序使用说明(1)本程序的运行环境为VC6.0。(2)进入演示程序后即显示提示信息:Enterthefirstcode(m):输入初始报数值Enterthepeoplenumber(n):输入人数enterthe1code(data):输入第一个人所持的密码enterthe2code(data):输入第一个人所持的密码┊┊┊enterthencode(data):输入第n个人所持的密码,输入完毕后就进行报数操作:2.测试结果当输入m=6,n=7,每个人所持密码一次为:3,1,7,2,4,8,4时,则输出正确的出列顺序为:6,1,4,7,2,3,5。3.调试中的错误及解决办法。(遇到时给出)4.运行界面(五)、实验总结(实验心得)你在编程过程中花时多少?多少时间在纸上设计?多少时间上机输入和调试?多少时间在思考问题?遇到了哪些难题?你是怎么克服的?你的收获有哪些?教师评语:实验成绩:指导教师签名:批阅日期:
本文标题:数据结构实验报告示例
链接地址:https://www.777doc.com/doc-5305912 .html