ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:76.95KB ,
资源ID:8623956      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8623956.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计论文.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计论文.docx

1、数据结构课程设计论文 09数据结构课程设计论文 课题:一、迷宫求解二、扑克牌游戏三、joseph环四、商品货架管理 五、航空客运订票系统 班级:07信息与计算科学 学生:XXX 学号: 指导老师:XXX 目 录课程设计封1目 录2迷宫求解39(一)需求分析3(二)源程序45(三)测试后的结果67(四)结果分析8扑克牌游戏910(一)需求分析9(二)源程序9(三)测试后的结果9(四)结果分析10joseph环1016(一)需求分析11(二)源程序1214(三)测试后的结果1516(四)结果分析16商品货架管理1617(一)需求分析16(二)源程序16(三)测试后的结果16(四)结果分析17航空客

2、运订票系统1824(一)需求分析18(二)源程序1920(三)测试后的结果2022(四)结果分析24课程设计心得体会2425课题设计1:迷宫求解一. 需求分析:本程序是利用非递归的方法求出一条走出迷宫的路径,并将路径输出。首先由用户输入一组二维数组来组成迷宫,确认后程序自动运行,当迷宫有完整路径可以通过时,以0和1所组成的迷宫形式输出,标记所走过的路径结束程序;当迷宫无路径时,提示输入错误结束程序。二、 概要设计:1.抽象数据类型定义:ADT Find数据对象:D=ai?ai ElemSet,i=1,2,n,n0数据关系:R1=?ai-1, aiD 基本操作: find (&S)初始条件:已初

3、始化栈S,且栈为空操作结果:从栈中找出相对应的数据关系,并输出结果ADT Find2. 主程序的流程以及各程序模块之间的调用关系:(1).定义变量i、j、w、z为整形变量(2).输入迷宫二维数组maze(0:m,0:n)(3).调用子程序find ()(4).结束程序三、相应的源程序如下:#include#includetypedef enum ERROR, OK Status;typedef struct int row, line; PosType; typedef struct int di, ord; PosType seat; SElemType; typedef structSEl

4、emType * base;SElemType * top;int stacksize;SqStack;Status InitStack(SqStack &S); Status Push(SqStack &S,SElemType &a); Status Pop(SqStack &S,SElemType &a); Status StackEmpty(SqStack S); Status MazePath(int maze1212,SqStack &S, PosType start, PosType end); void Initmaze(int maze1212,int size); void

5、printmaze(int maze1212,int size); Status Pass(int maze1212,PosType CurPos); void Markfoot(int maze1212, PosType CurPos); PosType NextPos(PosType CurPos, int Dir); void printpath(int maze1212,SqStack S,int size);void main (void) SqStack S;int size,maze1212; for(int n=0;n10;n+) printf(创建一个正方形迷宫,请输入迷宫尺

6、寸(注意不要大于50):n); scanf(%d,&size);if(size10)printf(输入错误!);return; Initmaze(maze,size); printmaze(maze,size); PosType start,end; printf(输入入口行坐标和列坐标:);scanf(%d,&start.row);scanf(%d,&start.line); printf(输入出口行坐标和列坐标:);scanf(%d,&end.row);scanf(%d,&end.line); if(MazePath(maze,S,start,end) printpath(maze,S,s

7、ize); else printf(找不到通路!nn);Status MazePath(int maze1212,SqStack &S, PosType start, PosType end) PosType curpos;int curstep;SElemType e;InitStack(S);curpos = start; curstep = 1; do if (Pass(maze,curpos) Markfoot(maze,curpos); e.di =1; e.ord = curstep; e.seat= curpos; Push(S,e); if (curpos.row=end.ro

8、w & curpos.line=end.line) return OK; curpos = NextPos(curpos, 1); curstep+; else if (!StackEmpty(S) Pop(S,e); while (e.di=4 & !StackEmpty(S) Markfoot(maze,e.seat); Pop(S,e); if (e.di4) e.di+; Push(S, e); curpos = NextPos(e.seat, e.di); while (!StackEmpty(S);return ERROR; void Initmaze(int maze1212,i

9、nt size) char select; printf(选择创建方式 A:自动生成 B:手动创建n); label:scanf(%c,&select); if(select=a|select=A) for(int i=0;isize+2;i+)maze0i=1; for( i=1;isize+1;i+) mazei0=1; for(int j=1;jsize+1;j+) mazeij=rand()%2; mazeisize+1=1; for(i=0;isize+2;i+)mazesize+1i=1; else if(select=b|select=B) printf(按行输入%d*%d数据,

10、0代表可通,1代表不可通(每行以Enter结束):n,size,size); for(int i=0;isize+2;i+)maze0i=1; for( i=1;isize+1;i+) mazei0=1; for(int j=1;jsize+1;j+) scanf(%d,&mazeij); mazeisize+1=1; for(i=0;isize+2;i+)mazesize+1i=1; else if(select=n)goto label; else printf(输入错误!);void printmaze(int maze1212,int size)printf(nn);printf(显示

11、所建的迷宫(#表示外面的墙):n); for(int i=0;isize+2;i+)printf(%c ,#);printf(n);for(i=1;isize+1;i+) printf(%c ,#); for(int j=1;jsize+1;j+) printf(%d ,mazeij); printf(%c,#); printf(n); for(i=0;iseat.rowp-seat.line=2; p+; for(int i=0;isize+2;i+)printf(%c ,#);printf(n);for(i=1;isize+1;i+) printf(%c ,#); for(int j=1;

12、jsize+1;j+) if(mazeij=2) printf(%c ,0); else printf( ); printf(%c,#); printf(n); for(i=0;isize+2;i+)printf(%c ,#);printf(nn);Status Pass(int maze1212,PosType CurPos)if (mazeCurPos.rowCurPos.line=0) return OK; else return ERROR; void Markfoot(int maze1212,PosType CurPos)mazeCurPos.rowCurPos.line=1;Po

13、sType NextPos(PosType CurPos, int Dir) PosType ReturnPos; switch (Dir) case 1: ReturnPos.row=CurPos.row; ReturnPos.line=CurPos.line+1; break; case 2: ReturnPos.row=CurPos.row+1; ReturnPos.line=CurPos.line; break; case 3: ReturnPos.row=CurPos.row; ReturnPos.line=CurPos.line-1; break; case 4: ReturnPo

14、s.row=CurPos.row-1; ReturnPos.line=CurPos.line; break;return ReturnPos;Status InitStack(SqStack &S)S.base=(SElemType *)malloc(100*sizeof(SElemType);if(!S.base)return ERROR;S.top=S.base;S.stacksize=100;return OK;Status Push(SqStack &S,SElemType &a) *S.top+=a;return OK;Status Pop(SqStack &S,SElemType

15、&a)if(S.top=S.base)return ERROR;a=*-S.top;return OK;Status StackEmpty(SqStack S)if(S.top=S.base)return OK;return ERROR;以下为测试数据:输入一个矩阵,例如:1 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0 输入入口行坐标和列坐标:1 2输入出口行坐标和列坐标:5 5通路路径为:课题设计2:扑克牌游戏1、问题描述编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为

16、基数,是3的倍数的牌翻一次,直到最后一张牌;然后从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;.再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些?存储结构:源程序:#include void main() int i,j,a52; for(i=2;i=52;i+) for(j=i-1;j52;j+=i) aj=!aj; printf(正面向上的牌有:); for(i=0;i52;i+) if(ai) printf(%4d,i+1);测试结果:正面向上的牌有:1 4 9 16 25 36 49算法的时间复杂度:T(n)=O(n2)

17、课题设计3:joseph环一. 需求分析:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。首先创建一个空链表,初始化链表,构造出一个只有头结点的空链表,建立好一个约瑟夫环。1. 输入的形式和输入值的范围 本程序中,输入报数上限值m和人数上限l,密码,均限定为正整数,输入的形式为一个以“回车符”为结束标志的正整数。2. 输出的形式 从屏幕显示出列顺序。3. 程序功能 提供用户从键盘输入,Joseph约瑟夫环的必要数据,并显示出列顺序。二、 概要设计以单向循环链表实现该结构。1. 抽象数据类型的定义为:ADT LNode 数据对象:D=ai | aiCharSet,i= 1,2

18、,n,n0 数据关系:R1=< ai-1 ,ai > | ai D, I=2,n三源程序:#include #include typedef struct Node int key;/每个人持有的密码 int num;/这个人的编号 struct Node *next;/指向下一个节点 Node,*Link; void InitList(Link &L) /创建一个空的链表 L=(Node *)malloc(sizeof(Node); if(!L) exit(1); L-key=0; L-num=0; L-next=L; void Creater(int n,Link &L) /初

19、始化链表 Link p,q; q=L; for(int i=1;ikey); p-num=i; L-next=p; L=p; L-next=q-next; free(q); void main() Link L,p,q; int n,x; L=NULL; InitList(L);/构造出一个只有头结点的空链表 printf(please input the totle number of people:); scanf(%d,&n);/总共的人数n printf(the start key is:); scanf(%d,&x);/初始密码为x Creater(n,L);/建立好一个约瑟夫环 p

20、=L; for(int i=1;i=n;i+) for(int j=1;jnext; q=p-next; x=q-key; printf(%d ,q-num); p-next=q-next; free(q); 四、测试数据:m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4输出:6 7 4 1 5 3 2课题设计4:商品货架管理1、需求分析:设计一个算法,每一次上货后始终保持生产日期越近的商品越靠近栈底。求货架上剩余货物M、每天销售件数N、员工每天上货工作时间T,三者之间有何关系及T的最小值。2、源程序:#include#includestring.h#includestd

21、io.hconst int maxsize=100; const int k=10; #define elemtype chartypedef structint Month;int Day;int Year;DATE;typedef struct int num; DATE date; Node;class seqstackpublic:Node stackmaxsize;int top;void inistack()top=0;void push(int x,int day,int month,int year)if(top=maxsize)cout货架已满endl;else top+;s

22、tacktop.num=x;stacktop.date.Day=day;stacktop.date.Month=month;stacktop.date.Year=year;void pop()if(top=0)cout货架已空endl;elsetop-;elemtype gettop()if(top=0)cout货架已空endl;elsereturn top;bool empty()return top=0;void main()seqstack ck+1; /存放k种商品的数组,用c0来做中介货架int Txqk+1; /第i种取货用的时间int Txsk+1; /第i种上货用的时间int

23、Nxk+1; /第i种每天的销售数量int N=0; /每天销售总量int Txk+1; /第i种每天上货的总时间int T=0; /每天上货用的总时间char yn=Y;for(int i=1;i=k;i+)cout *endl;cout 商品货架管理系统endl;cout *endl;Node store20;char year,month;int count; /货架上第i种商品的数目 int x,d,m,y; /x为第i种商品的序号cout请输入货架上第i种货物的详细信息:endl;cout(序号,生产日期(年、月、日如2006.2.13),现在货架上的存货数目,上货用时和取货用时)xyyearmmonthdcountTxsiTxqi;Nxi=maxsize-count;cout货架上还需上i货物Nxi件endl;Txk=Txsi*(maxsize+count)+2*Txqi*count;cout该货架满货需要用时Txkendl;cout是否要上货?(Y/N)yn;if(yn=Y|yn=y)int numbers,nian,yue,ri;cout请输入要上货物的数目及生产日期(年、月、日)numbersnianyueri;i

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1