车厢调度 数据结构 课程的设计 C++.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
车厢调度数据结构课程的设计C

课程设计任务书学生姓名: 杨建喜 专业班级: 计算机0803指导教师: 陈天煌 工作单位: 计算机科学系题 目: 车厢调度 初始条件: 假设停在铁路调度站(如教科书中图3.1(b)所示)入口处的车厢序列的编号依次为1,2,3,…,n。设计一个程序,求出所有可能由此输出的长度为n的车厢序列。 首先在教科书3.1.2节中提供的栈的顺序存储结构SqStack之上实现栈的基本操作,即实现栈类型。程序对栈的任何存取(即更改,读取和状态判别等操作)必须借助于基本操作进行。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)课程设计报告按学校规定格式用A4纸打印(书写),并应包含如下内容: 1. 问题描述简述题目要解决的问题是什么。2. 设计存储结构设计、主要算法设计(用类C/C++语言或用框图描述)、测试用例设计;3. 调试报告调试过程中遇到的问题是如何解决的;对设计和编码的讨论和分析。4. 经验和体会(包括对算法改进的设想)5. 附源程序清单和运行结果。源程序要加注释。如果题目规定了测试数据,则运行结果要包含这些测试数据和运行输出。说明:1. 设计报告、程序不得相互抄袭和拷贝;若有雷同,则所有雷同者成绩均为0分。2. 凡拷贝往届任务书或课程设计充数者,成绩一律无效,以0分记。时间安排:1、第18周完成。2、7月2日8:30时到实验中心检查程序、交课程设计报告、源程序(U盘)。指导教师签名: 2010年 月 日系主任(或责任教师)签名: 2010年 月 日车厢调度问题描述1、用编号依次为1,2,3,……,n表示停在铁路调度站入口处的车厢序列。2、用一个栈形象地表示为火车的调度站。3、利用栈先进后出的性质,结合递归和回溯算法,实现编号1…n的车厢的所有可能的序列。设计为了使车厢能够调度,需要定义一个栈,利用栈先进后出的性质,改变车厢的顺序。对栈的抽象数据类型进行定义: ADT stack{数据对象:D={ai | ai∈CharSet,i=1,2,……,n,n≥0}数据关系; R={ai-1,ai | ai-1,ai∈D,i=2,……,n}} MakeEmpty():操作结果:构造一个空栈S。IsEmpty(): 判断栈是否为空栈,若s为空栈,则返回1,否则返回0。 Push(int item) 在栈s的栈顶插入新的栈顶元素item。 Pop()删除s的栈顶元素并返回其值。以上定义的详细设计如下代码所示:struct StackNode{int data[maxSize];int top;}s;int n;void MakeEmpty() //置空栈{ s.top=-1;}int IsEmpty() //判栈空否{ if(s.top==-1)return 1;elsereturn 0;}void Push(int item) //进栈{s.top++;s.data[s.top]=item;}int Pop() //出栈并取栈顶{ int temp;temp=s.data[s.top];s.top--;return temp;}生成输出序列的函数的伪码算法如下:void OutPut(int pp,int cc,int Ways[])if(ppn){一个数进栈后,有两种处理方式:要么立刻出栈,要么进行下一个数的进栈};if(!IsEmpty()){一个数出栈后,有两种处理方式:要么继续出栈,要么继续下一个数的进栈}if(pp==nIsEmpty()){一种可能输出序列产生,输出}该函数详细代码如下:void OutPut(int pp,int cc,int Ways[]){ int m,i;if(ppn) //一个数进栈后,有两种处理方式:要么立刻出栈,要么进行下一个数的进栈{ Push(pp+1);OutPut(pp+1,cc,Ways);Pop();}if(!IsEmpty()) //一个数出栈后,有两种处理方式:要么继续出栈,要么继续下一个数的进栈{m=Pop();Ways[cc]=m;cc++;OutPut(pp,cc,Ways);Push(m);}if(pp==nIsEmpty()) //一种可能输出序列产生,输出{for(

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档