- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计 车厢调度程序
数据结构课程设计-车厢调度程序
20
第一章 问题描述
1.题目
假设停在铁路调度站入口处的车厢序列的编号一次为 1,2,3,……,n。设计一个程序,求出所有可能由此输出的长度为n的车厢序列。本设计程序用于实现有限个车厢调度排序,用户可根据自身情况自行输入车厢调度的长度,本程序会根据用户所输入的长度自动进行排序。本程序增加选择的功能,可根据不同需要进行步骤的选择,并显示出所有可能的排序方法。
2.需求分析
1 提供的栈的顺序存储结构SqStack之上实现栈的基本操作,即实现栈类型。
2 程序对任何栈的任何存取(即更改、读取和状态判别等操作)必须借助于基本操作执行。
3 用户可以自己输入调度的大小 , 然后由程序自动生成结果.
第二章 设计思路
1.菜单显示
本系统主要的菜单显示有两个界面,一个是对本系统主要简介的界面,其中包括数据结构课程设计、铁路调度站模拟、11级软件工程。另一个是主要的操作界面,主要包括1请输入火车长度、2输出所有可能序列、3退出本程序。
2.调度过程
本系统主要是利用栈进行定义和设计,主要依赖于栈的基本操作,首先判断站是否为空,如果非空则进行进栈操作,否则返回。所以每一个数根据以上出入栈的选择,将产生所有可能的车厢序列。本设计中还用到了递归的思想:数据入栈后,对数据有两种处理方法,进栈或者下一个数的进栈,一个数的出栈后也有两种处理方法,要么出栈,要么下一个数的进栈。
3.序列输出过程
根据栈的特性输出长度为N的所有车厢序列,按ENTER将显示所有的序列的显示。第三章 数据结构定义
设定栈的抽象数据类型定义 :
ADT Stack
数据对象 : Dai|ai∈ADT MazeType , i 0,1,2……n , n≥0
数据关系 : R1 ai-1,ai | ai-1,ai ∈D,i2,……n
基本操作 :
InitStackSqStack s
操作结果 : 构造一个空栈
GetTopSqStack s,SElemType e
初始条件 : 栈 s 以存在
操作结果 : 获取栈顶元素PushSqStack s,SElemType e
初始条件 : 栈 s 以存在
操作结果 : 在栈顶插入新元素
PopSqStack s,SElemType e
初始条件 : 栈 s 以存在
操作结果 : 删除栈顶元素,并删除e值
StackEmptySqStack s
初始条件 : 栈 s 以存在
操作结果 : 判断栈是否为空
ClearStackSqStack s
初始条件 : 栈 s 以存在
操作结果 : 将栈置为空栈
ADT SqStack;
设定车厢调度的抽象数据类型
ADT MazeType
数据对象 : Dai,j|ai,j∈‘ ’,‘#’、‘@’、‘*’,0im+1, 0jn+1,m,n10
数据关系 : RM,N
Ma i-1,j,ai,j|ai-1,j,ai,j∈D,i1,……,m+1,j0,……,n+1
Na i-1,j,ai,j|ai-1,j,ai,j∈D,i1,……,m+1,j0,……,n+1
基本操作 :voidprocessint pos,int path[],int curp//当前处理位置pos的元素
定一两个变量ifposn//编号进栈递归pushpos+1;//当前元素进栈后下一个元素继续进栈processpos+1,path,curp;//处理下一个元素,返回表明下一个元素进栈的情况处理完了pop; //下一个元素处理完后,pop 掉,准备处理直接出栈 if!Emptys//递归处理出栈 mpop;path[curp]m; //数组存放出栈元素 curp++;processpos,path,curp;//出栈后处理下一个素继续进栈pushm;
ifposnEmptys//输出一种可能的方案 fori0;icurp;i++ printf%2d,path[i];printf\n; 本系统主要是考虑对栈的使用,循环队列和双向链表的运用。
---------头文件设计(部分)-----本部分是讲述栈的相关操作:
#includestdlib.h
#include
#includestdio.h
#include
#defineLen100
structStack_node
int data[Len];
int top;
s; //定义一个栈指针
intn;//定义输入序列总个数//----------------栈的基本操作----------------
voidIni
文档评论(0)