车厢调度问题课程设计报告Word格式.docx

上传人:b****6 文档编号:20457008 上传时间:2023-01-23 格式:DOCX 页数:9 大小:166.06KB
下载 相关 举报
车厢调度问题课程设计报告Word格式.docx_第1页
第1页 / 共9页
车厢调度问题课程设计报告Word格式.docx_第2页
第2页 / 共9页
车厢调度问题课程设计报告Word格式.docx_第3页
第3页 / 共9页
车厢调度问题课程设计报告Word格式.docx_第4页
第4页 / 共9页
车厢调度问题课程设计报告Word格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

车厢调度问题课程设计报告Word格式.docx

《车厢调度问题课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《车厢调度问题课程设计报告Word格式.docx(9页珍藏版)》请在冰豆网上搜索。

车厢调度问题课程设计报告Word格式.docx

系主任(签字)

年月日

成绩评定表

作品成绩

报告成绩

口试(答辩)成绩

总评成绩

目录

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++与面向对象的途经(修订版)》,高等教育出版社

........忽略此处.......

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

当前位置:首页 > 小学教育 > 语文

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

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