车厢调度问题课程设计报告Word格式.docx
- 文档编号:20457008
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:9
- 大小:166.06KB
车厢调度问题课程设计报告Word格式.docx
《车厢调度问题课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《车厢调度问题课程设计报告Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
系主任(签字)
年月日
成绩评定表
作品成绩
报告成绩
口试(答辩)成绩
总评成绩
目录
1课程设计概述1
1.1车厢调度问题功能概述......................................................................................1
2车厢调度问题总体设计........................................................................................................1
2.1全局变量定义.............................................................................................................1
2.2栈的定义.......................................................................................................................2
3.算法设计............................................................................................................................2
3.1用到的进出栈算法基础知识...............................................................................2
3.2程序分析.......................................................................................................................2
3.2.2核心算法..........................................................................................................4
3.2.3主程序描述.....................................................................................................5
4.程序实现..........................................................................................................................5
4.1运行界面..................................................................................................................5
4.2不足之处...................................................................................................................7
5.设计体会...........................................................................................................................7
6.结束语.................................................................................................................................8
摘要:
通过输入车厢系列的编号n,求出所有可能由此输出的长度为n的车厢系列,用入栈出栈的方法,实现车厢调度,并演示每一种出栈序列的过程。
任务:
假设停在铁路调度站入口处的车厢系列的编号依次为1,2,3,…n。
设计一个程序,求出所有可能由此输出的长度为n的车厢系列。
关键字:
车厢,调度,栈,递归
1.引言
随着人民生活水平的提高,越来越多的人坐火车出去旅游,这也让火车车厢的量大量增大,也随之出现了一个问题,即合理的调度车厢,本课程设计即利用数据结构里的栈的知识,设计一个合理的算法,来解决此问题。
2.需求分析
假设停在铁路调度站入口处的车厢序列的编号依次为1,2,3,……,n,设计一个程序,求出所有可能的长度为n的车厢序列。
实现栈的顺序存储结构SqStack之上实现栈的基本操作,即实现栈类型。
程序对栈的基本操作必须借助于基本操作进行。
测试数据取n=3,4,程序输出的结果应该在屏幕上显示出来。
3.数据结构设计
2.1全局变量定义
typedef
int
SElemType;
Status;
end;
/*最后一个车厢的号码*/
long
total=0;
/*总的组合方案数目*/
2.2栈的定义
struct
stacklist
void
Stack_init(SqStack
*s)
Stack_Push(SqStack
*s,SElemType
e)
SElemType
Stack_Pop(SqStack
Status
Stack_Empty(SqStack
Stack_Full(SqStack
Stack_printreverse(SqStack
s)
3.算法设计
3.1用到的进出栈算法基础知识
(1)根据要求,了解可能要用到的算法:
3.1.1进栈(PUSH)算法
①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;
不满则作②);
②置TOP=TOP+1(栈指针加1,指向进栈地址);
③S(TOP)=X,结束(X为新进栈的元素);
3.1.2退栈(POP)算法
①若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈,空则下溢;
不空则作②);
②X=S(SOP),(退栈后的元素赋给X);
③TOP=TOP-1,结束(栈指针减1,指向栈顶)。
3.2程序分析
3.2.1.栈的数据结构
{
*base;
*top;
stacksize;
}SqStack;
s->
base=(SElemType
*)malloc(end*sizeof(int));
if(!
base)
exit(0);
top=s->
base;
stacksize=end;
}
*(s->
top)++=e;
if(s->
top==s->
base)
return
0;
*(--(s->
top));
1;
top-s->
base==end)
}
*po;
po=s.base;
printf("
[%ld]:
"
total);
for(;
po!
=s.top;
)
%d
*po++);
\n"
);
3.2.2核心算法
search(SqStack
*inputPoint,SqStack
*tempPoint,SqStack
*outputPoint)
Stack_Empty(inputPoint))
Stack_Push(tempPoint,Stack_Pop(inputPoint));
search(inputPoint,tempPoint,outputPoint);
Stack_Push(inputPoint,Stack_Pop(tempPoint));
Stack_Empty(tempPoint))
Stack_Push(outputPoint,Stack_Pop(tempPoint));
Stack_Push(tempPoint,Stack_Pop(outputPoint));
if(Stack_Full(outputPoint))
total++;
Stack_printreverse(*outputPoint);
3.2.3主程序描述
main()
SqStack
input,temp,output;
i;
printf("
请输入车厢数(2-30)\n
scanf("
%d"
&
end);
/*初始化三个栈*/
Stack_init(&
input);
temp);
output);
/*将车厢号码进栈*/
for(i=end;
i>
=1;
i--)
Stack_Push(&
input,i);
search(&
input,&
temp,&
the
total:
%ld\\n"
getch();
4.程序实现
4.1运行界面
(1)运行主界面
(2)当输入n的值为3时,屏幕显示
(3)当输入n的值为4时,屏幕显示
4.2不足之处
我这个程序主要通过设置三个栈来实现,核心算法通过两次递归调用实现。
可以实现任务书里所要求的功能,但是也存在着不足之处,就是在运行界面,输出n值,按回车键,得到输出结果后,要想继续输入另一数值n,不能返回,只有退出,重新运行,才能输入得到输出结果。
5.设计体会
看到自己写的程序成功的运行真是种莫大的欣喜!
很多时候,总是感觉学到的东西不知何用,总想用学过的语言来写些程序,却一直不知道写些什么。
终于,机会来到了,数据结构课程设计,让我一下子回忆起了以前学到的很多语言,于是,就有了运用自己所学的所有语言分别来实现车厢的调度。
通过这个星期的课程设计,我的收获还是不少。
我的编程水平有了比较大的提高,虽然我做的程序里还有写问题,做的不够深入,但独立完成一个比较大一点的程序的经历也是很宝贵的。
6.结束语
本课程设计主要是为了实现解决以下问题的程序:
假设停在铁路调度站入口处的车厢序列的编号依次为1,2,3……N。
求出所有由此输出的长度为N的车厢序列。
我在解决这个问题时,用的是VisualC++来做到这点的。
参考文献
[1]严蔚敏。
《数据结构习题》,清华大学出版社
[2]许卓群,杨冬青。
《数据结构与算法》,高等教育出版社
[3]张乃孝,裘宗燕。
《数据结构—C++与面向对象的途经(修订版)》,高等教育出版社
........忽略此处.......
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车厢 调度 问题 课程设计 报告