数据结构课程设计 车厢调度

合集下载

车厢调度课程设计

车厢调度课程设计

车厢调度课程设计一、课程目标知识目标:1. 让学生理解车厢调度的基本概念,掌握调度原则和流程;2. 使学生掌握车站编组、列车编组的知识,了解不同类型的调度方法;3. 帮助学生了解铁路运输中信号与通信系统在车厢调度中的应用。

技能目标:1. 培养学生运用车厢调度知识解决实际问题的能力;2. 提高学生分析列车运行图、调度计划的能力;3. 培养学生运用信息技术工具进行车厢调度模拟操作的能力。

情感态度价值观目标:1. 培养学生关注铁路交通事业,增强对我国交通运输发展的责任感和使命感;2. 培养学生合作、沟通、协调的能力,提高团队意识;3. 培养学生严谨、认真、负责的学习态度,树立良好的职业道德观念。

课程性质:本课程为铁路运输专业课程,具有较强的实践性和应用性。

学生特点:学生具备一定的铁路运输基础知识,具有较强的学习兴趣和动手能力。

教学要求:结合学生特点和课程性质,注重理论联系实际,提高学生的实践操作能力。

通过课程学习,使学生能够掌握车厢调度的基本知识和技能,具备解决实际问题的能力。

将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. 车厢调度基本概念:车厢调度的定义、分类及作用;2. 车站编组与列车编组:车站编组内容、列车编组方式及注意事项;3. 车厢调度原则与流程:安全、高效、均衡原则;调度流程的步骤及要求;4. 调度方法:单向调度法、双向调度法、循环调度法等;5. 信号与通信系统在车厢调度中的应用:信号系统的基本原理、通信系统的作用及在调度中的应用;6. 列车运行图与调度计划:列车运行图的编制、调度计划的内容及制定方法;7. 车厢调度模拟操作:运用信息技术工具进行车厢调度模拟操作。

教学内容安排与进度:第一周:车厢调度基本概念、车站编组与列车编组;第二周:车厢调度原则与流程、调度方法;第三周:信号与通信系统在车厢调度中的应用;第四周:列车运行图与调度计划;第五周:车厢调度模拟操作。

教材章节关联:《铁路运输设备与调度》第三章:车站设备与调度;《铁路运输组织与管理》第四章:列车运行图与调度计划。

数据结构课程设计车厢调度

数据结构课程设计车厢调度

数据结构课程设计题目名称:车厢调度计算机科学与技术学院1. 需求分析假设停在铁路调度站入口处的车厢序列的编号一次为1,2,3,…,n。

设计一个程序,求出所有可能由此输出的长度为n的车厢序列。

实现栈的顺序存储结构SqStack之上实现栈的基本操作,即实现栈类型。

程序对栈的基本操作必须借助于基本操作进行。

规定:(a) 输入的形式为整形,输入值的范围为100内整数;(b) 输出的形式为整形,以2位的固定位宽输出;(c) 程序所能达到的功能;输入车厢长度n,输出所有可能的车厢序列;(d) 测试数据:测试数据取 n=3,4, 0,101,程序输出的结果应该在屏幕上显示出来。

2. 概要设计具体要求:火车调度问题最适合用数据结构中的栈来解决。

而解决相应问题算法核心,是栈的递归。

所以程序除了要有栈的基本函数,还要有以递归算法为核心的函数。

设计思想:一个数的进栈以后,有两种处理方式:要么立刻出栈,或者下一个数的进栈(如果还有下一个元素)。

其出栈以后,也有两种处理方式:要么继续出栈(栈不为空),或者下一个数的入栈。

核心算法:包含两重递归,下一个元素处理完后返回,再处理出栈的递归。

进栈的递归跳出条件为最后一个元素进栈。

出栈的递归跳出条件为栈空各模块功能如下:栈的定义:struct snode //结构体void Initstack() //初始化void push(int q) //入栈int pop() //出栈int Emptys() //判断栈是否为空核心算法:void process(int pos,int path[],int curp)//当前处理位置pos的元素3. 详细设计栈的数据结构:struct snode{int data[MaxLen];int top;} s;//定义一个栈指针void Initstack()//初始化{s.top=-1;}void push(int q)//入栈{s.top++;s.data[s.top]=q;}int pop()//出栈{int temp;temp=s.data[s.top];s.top--;return temp;}int Emptys()//判断栈是否为空{if(s.top==-1)return 1;elsereturn 0;}核心算法:void process(int pos,int path[],int curp)//当前处理位置pos的元素{int m,i;if(pos<n)//编号void process(int pos,int path[],int curp)//当前处理位置pos的元素进栈递归{push(pos+1);//当前元素进栈后下一个元素继续进栈process(pos,path,curp);//出栈后处理下一个元素继续进栈push(m);}if(pos==n&&Emptys())//输出一种可能的方案{for(i=0; i<curp; i++)printf("%2d",path[i]);printf("\n");}}主程序描述:int main(){int path[MaxLen];printf("输入要调度车厢总数:");scanf("%d",&n);if(n<=0||n>100)printf("输入错误\n");else{Initstack();push(1);printf("所有输出序列:\n");process(1,path,0); //从1 开始,递归处理所有元素}}4. 调试分析遇到问题:输入不在设定范围内的数字,而没有错误提示。

数据结构.车厢调度

数据结构.车厢调度


问题 分析:
从具体问题入手: 第一步:假如有1,2,3准备进栈,此时具体的过程如下
第二步:对上述过程的进一步分析,一个数进栈以后,有 两种处理方式:要么下一个元素进栈(如果有的话),要 么立刻出栈;一个数出栈以后,要么继续出栈(如果栈不 为空),要么下一个元素进栈(如果有的话)
第三步:继续分析,由此得出一个结论,在操作过程中的 任何状态下都有两种可能的操作:“入”和“出”。每个 状态下处理问题的方法都是相同的,这说明问题本身具有 天然的递归特性,可以考虑用递归算法实现。
1出

S(1,path,2) 停止 停止 输出 path[i]:2,1
S(1,path,1) push(2) S(2,path,1) pop()
停止
S(2,path,1) 停止
停止
输出 p①:
②:
1
③:
④:
2 1 ⑤: 1 ⑥: 1 ⑦:
⑧:
2
⑨:
本程序的主要算法分析: 调度函数的伪码算法如下: void Scheduling(int pos, int path[],int i) { if(pos<n) { 一个数进栈后,有两种处理方式:要么下一个数的进栈, 要么立刻出栈} if(!IsEmpty()==true){ 一个数出栈后,有两种处理方式:要么继续出栈,要么下一 个数的进栈} if(pos==n&&IsEmpty()){ 一种可能输出序列产生,输出} }
主函数调用Scheduling函数后后究竟怎么执行的呢 现考虑只有两个车厢1,2
S(2,path,0) 停止 S(1,path,0) push(2) S(2,path,0) pop() t=path[0]=p op() S(1,path,1) push(t) t=path[0]=p op() S(1,path,1) push(t) S(1,path,1) 停止 t=path[0]=p op() S(1,path,2) push(t)

车厢调度问题

车厢调度问题

题目: 车厢调度问题初始条件:理论:学习了《数据结构》课程,掌握了基本的数据结构和常用的算法;实践:计算机技术系实验室提供计算机及软件开发环境。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、系统应具备的功能:(1)求出由一个编号依次为1,2,……,n的车厢序列可能产生的所有出栈系列;(2)求出有多少种出栈的可能性;(3)对于每个输出序列演示出所有操作序列的变化过程。

2、数据结构设计;3、主要算法设计;4、编程及上机实现;5、撰写课程设计报告,包括:(1)设计题目;(2)摘要和关键字;(3)正文,包括引言、需求分析、数据结构设计、算法设计、程序实现及测试、不足之处、设计体会;(4)结束语;(5)参考文献。

时间安排:2007年7月2日-7日(第18周)7月2日查阅资料7月3日系统设计,数据结构设计,算法设计7月4日-5日编程并上机调试7月6日撰写报告7月7日验收程序,提交设计报告书。

指导教师签名: 2007年7月2日系主任(或责任教师)签名: 2007年7月2日车厢调度问题摘要:通过输入车厢系列的编号n,求出所有可能由此输出的长度为n的车厢系列,用入栈出栈的方法,实现车厢调度,并演示每一种出栈序列的过程。

任务:假设停在铁路调度站入口处的车厢系列的编号依次为1,2,3,…n。

设计一个程序,求出所有可能由此输出的长度为n 的车厢系列。

关键字:车厢,调度,栈,递归0.引言随着人民生活水平的提高,越来越多的人坐火车出去旅游,这也让火车车厢的量大量增大,也随之出现了一个问题,即合理的调度车厢,本课程设计即利用数据结构里的栈的知识,设计一个合理的算法,来解决此问题。

1.需求分析假设停在铁路调度站入口处的车厢序列的编号依次为1,2,3,……,n , 设计一个程序,求出所有可能的长度为n 的车厢序列。

实现栈的顺序存储结构SqStack之上实现栈的基本操作,即实现栈类型。

程序对栈的基本操作必须借助于基本操作进行。

数据结构课程设计 车厢调度

数据结构课程设计 车厢调度

武汉轻工大学数学与计算机学院《数据结构》课程设计说明书题目:车厢调度专业:数学与计算机学院班级:大类1304 学号:姓名:指导老师:**2014年 12月 24日一.题目分析课程设计题目:【问题描述】铁路调度站入口处的车厢序列编号依次为1,2,3,……,n。

设计一个程序求出所有可能由此输出的长度为n的车厢序列。

【基本要求】首先在教科书3.1.2节中提供的栈的顺序存储结构SqStack之上实现栈的基本操作,即实现栈类型。

程序对栈的任何存取(即更改,读取和状态判别等操作)必须借助于基本操作进行。

【测试数据】分别取n=1,2,3,4【实现提示】一般的说,在操作过程的任何状态下都有两种可能的操作:“入”和“出”。

每个状态下处理问题的方法都是相同的,这说明问题本身具有天然的递归特性,可以考虑用递归算法实现。

输入序列可以仅由一对整型变量表示,即给出序列头/尾编号。

输出序列用栈实现是方便的。

分析:任何情况下栈的操作方式都只有两种,入栈与出栈。

如果知道入栈与出栈的组合,那么问题就可以很好的解决。

所以我设计了命令队列。

用0表示入栈,1表示出栈。

在确定的输入队列的情况下,命令队列与输出队列是一一对应的。

比如当n=3时,命令队列为000111的情况对应的输出队列是321。

也就是说问题转换成了求所以可能的命令队列的问题了。

如何求出所以的命令队列?我的解决方案是首先找到所以可能的命令队列所在的区间,然后在把这个区间内所有的队列遍历一遍,找出合法的队列,然后根据合法的命令队列进行操作栈,从而输出结果。

根据分析,我发现,可能的命令队列所在的区间的最小端是0000……1111。

最大端是010101……。

比如n=4时,可能的命令队列在00001111和01010101之间。

找到了可能的命令队列,再找合法的命令队列。

把所以可能的命令队列进行如下的条件判断,都满足的即是合法的命令队列。

判断条件:1.第一个是0,末尾一个是1.2.0和1各一半3.每出现一个1,前面必须有一个0与之对应(类似括号匹配)二.概要设计1.设定栈的抽象数据类型定义:ADT Stack{数据对象:D={iiaa|∈CharSet,i=1,2,...,n,,n≥0}数据关系:R1={<iiiiaaaa,|,11∈D,i=2,...,n}基本操作:InitStack(&S)操作结果:构造一个空栈S。

车厢调度问题课程设计报告

车厢调度问题课程设计报告

南逋理工爭院I 课程设计」报告课程名称数据结构课程设计选题名称车厢调度班级A1401 姓名王蓉学号02实验组别同组实验者完成时间2016年1月4日至2016年1月15日指导教师卫丽华目录1、数据结构课程设计任务书错误! 未定义书签。

、题目. 错误! 未定义书签。

、要求. 错误! 未定义书签。

2、总体设计错误! 未定义书签。

、功能模块设计. 错误! 未定义书签。

、所有功能模块的流程图错误! 未定义书签。

3、详细设计错误! 未定义书签。

、程序中所采用的数据结构及存储结构的说明错误! 未定义书签。

、算法的设计思想错误! 未定义书签。

4、调试与测试错误! 未定义书签。

5、源程序清单错误! 未定义书签。

6、C 程序设计总结错误! 未定义书签。

7、致谢错误! 未定义书签。

8、参考文献错误! 未定义书签。

1、数据结构课程设计任务书、题目车厢调度、要求假设在铁路调度站(如教科书图(b)所示)入口处的车厢序列的编号依次为1,2,3,…,n 。

设计一个程序,求出所有可能由此输出的长度为n的车厢序列。

首先在教科书上提供的栈的顺序存储结构Seqstack之上实现栈的基本操作,即实现栈类型。

程序对栈的任何存取(即更改,读取和状态判别等操作)必须借助于基本操作进行。

2、总体设计、功能模块设计根据课程设计题目的功能要求,各个功能模块的组成框图如下:、所有功能模块的流程图n3、详细设计、程序中所采用的数据结构及存储结构的说明1)栈类型;typ edef struct stacklistSEIemT ype *base;SEIemT ype *top;int stacksize;}SqStack;栈的基本操作设置如下:void Stack_init(SqStack *s) 义栈2. 初始化三个栈input,temp,output循环控制输出语句,车厢号依次进栈4.调用函数Stack_Push(&input,i);search(&input,&temp,&output); 输出所有情况基本操作:InitStack(&S)操作结果:构造一个空栈S。

车厢调度

车厢调度

数据结构课程设计设计题目:车厢调度学生姓名:万道武专业班级:10计算机科学与技术1班指导教师:姚丽莎完成时间:2012年6月7日信息工程学院计算机科学院与技术系目录1.设计目的 (4)2.需求分析 (5)3.概要设计 (5)4.详细设计 (7)5. 课程设计体会及问题分析 (10)6.参考文献 (11)7.附录 (12)1.设计目的数据结构作为一门学科主要研究数据的各种逻辑结构和存储结构,以及对数据的各种操作。

因此,主要有三个方面的内容:数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。

通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。

数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。

在当今信息时代,信息技术己成为当代知识经济的核心技术。

我们时刻都在和数据打交道。

比如人们在外出工作时找最短路径,在银行查询存款、通过互联网查新闻、以及远程教育报名等,所有这些都在与数据发生关系。

实际上,现实世界中的实体经过抽象以后,就可以成为计算机上所处理的数据。

数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。

数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。

学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。

通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。

通过此次课程设计主要达到以下目的:一、了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;二、初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;三、提高综合运用所学的理论知识和方法独立分析和解决问题的能力;四训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风2.需求分析本程序的任务是:假设停在铁路调度站入口处的车厢序列的编号依次为1,2,3…n。

【免费下载】车厢调度问题 课程设计报告

【免费下载】车厢调度问题 课程设计报告

年月日
作品成绩
报告成绩
成绩评定表
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

山东理工大学计算机学院课程设计(数据结构)班级计科1002姓名宫欣海学号1011051029指导教师刘晓红二○一一年一月十日课程设计任务书及成绩评定课题名称车厢调度Ⅰ、题目的目的和要求:巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。

(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。

(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。

Ⅱ、设计进度及完成情况Ⅲ、主要参考文献及资料[1] 严蔚敏数据结构(C语言版)清华大学出版社 1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999[3] 谭浩强 C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:刘晓红(签字)二○一一年一月十日目录第一章概述 (1)第二章系统分析 (2)第三章概要设计………………………………………………………第四章详细设计………………………………………………………第五章运行与测试……………………………………………………第六章总结与心得……………………………………………………参考文献………………………………………………………………第一章概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。

课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。

《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。

数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。

同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

在这次的课程设计中我选择的题目是车厢调度。

首先在教科书3.1.2节中提供的栈的顺序存储结构SqStack之上实现栈的基本操作,即实现栈的类型。

程序对栈的任何存取(即更改,读取和状态判别等操作)必须借助于基本操作进行。

一般的说,在操作过程的任何状态下都有两种可能的操作:“入”和“出”。

每个状态下处理问题的发发是相同的,这说明问题本身具有天然的递归性,可以参考用递归的算法实现。

输入序列可以仅由一对整型变量表示,即给出序列头/尾编号。

输出序列用栈实现是方便的,只要再定义一个栈打印操作print(s),自低至顶顺序地印出栈元素的值。

本部分主要说明:课程设计的目的意义;对自己题目的问题描述;以上为样例,特别是字体,字号,行间距等均参照样例,以下同。

第二章系统分析1.问题分析:可假设对二叉树的n个结点从1到n编号,且令其先序序列为1,2,……,n,则不同的二叉树所得到的中序序列不同。

这样,不同形态的二叉树的数目正好是先序序列均为1,2,……,n的二叉树所能得到的中序序列的数目,而中序遍历的过程实际上是一个结点进栈和出栈的过程。

因此,序列1,2,……,n按不同顺序进栈和出栈所能得到的排列的数目正好是由先序序列为1,2,……,n所能得到的中序序列的数目,也就是先序序列为1,2,……,n的不同形态的二叉树的数目,其数目为:1 (2n)!Cn== ------ * --------n+1 n!*n!2.设计内容:现有n节车厢,按不同的顺序进栈和出栈,计算出所有的出栈序列并输出。

例如:有4节车厢则输出:4 3 2 12 3 4 11 3 4 23 4 2 12 3 1 41 32 43 2 1 42 1 4 31 2 4 33 2 1 42 13 41 2 3 42 43 11 4 3 2本部主要说明题目的基本要求,注意对题目的基本要求进行详细分析,尽量细化到程序中每个函数实现的功能都能在此处说明。

第三章 概要设计1.设定栈的抽象数据类型定义: ADT Stack {数据对象:D={i i a a |∈CharSet,i=1,2,...,n,,n ≥0}数据关系:R1={<i i i i a a a a ,|,11-->∈D,i=2,...,n} 基本操作: InitStack(&S)操作结果:构造一个空栈S 。

DestroyStack(&S)初始条件:栈S 已存在。

操作结果:销毁栈S 。

ClearStack(&S)初始条件:栈S 已存在。

操作结果:将栈S 清为空栈。

Sta初始条件:栈S 已存在。

操作结果:返回栈S 的长度。

StackEmpty(S)初始条件:栈S 已存在。

操作结果:若S 为空栈,则返回TURE ,否则返回FALSE 。

GetTop(S,&e)初始条件:栈S 已存在。

操作结果:若S 不空,则e 返回栈顶元素。

Push (&S ,&e )初始条件:栈S 已存在。

操作结果:在s 的栈顶插入新的栈顶元素e 。

Pop(&S,&e)初始条件:栈S 已存在。

操作结果:删除S 的栈顶元素,并以e 返回其值。

StackTraverse (S ,visit ()) 初始条件:栈S 已存在。

操作结果:从栈底到栈顶依次对S 中的每个元素调用函数visit ()。

}ADT Stack2.本程序包含两个模块 1)主程序模块: Void main() {初始化; For 循环 }2)栈模块——实现栈的抽象数据类型各模块之间的调用关系如下:栈模块本章主要介绍1、数据结构的设计主要介绍在实验中采用(或设计)的数据结构以及原因。

2、算法的设计主要说明本设计从总体上划分几个模块,每个模块需要完成的功能是什么?定义每个模块对应的函数接口,用伪代码(类C或C++)设计每个模块对应的算法。

3、抽象数据类型的设计根据所设计的数据结构和接口函数,写出抽象数据类型定义或者简单类定义。

第四章详细设计1)栈类型;typedef struct stacklist{SElemType *base;SElemType *top;int stacksize;}SqStack;栈的基本操作设置如下:void Stack_init(SqStack *s)//初始化,设s为空栈void Stack_Push(SqStack *s,SElemType e)//若分配空间成功,则在s的栈顶插入新的元素e,并返回TRUE//若栈不变,并返回FALSESElemType Stack_Pop(SqStack *s)Status Stack_Empty(SqStack *s)Status Stack_Full(SqStack *s)void Stack_printreverse(SqStack s)void search(SqStack *inputPoint,SqStack *tempPoint,SqStack *outputPoint)2)代码#include <iostream>using namespace std;typedef int SElemType;typedef int Status;int end;/*最后一个车厢的号码*/long total=0;/*总的组合方案数目*/typedef struct stacklist{SElemType *base;SElemType *top;int stacksize;}SqStack;void Stack_init(SqStack *s){s->base=(SElemType *)malloc(end*sizeof(int)); if(!s->base) exit(0);s->top=s->base;s->stacksize=end;}void Stack_Push(SqStack *s,SElemType e){*(s->top)++=e;}SElemType Stack_Pop(SqStack *s){if(s->top==s->base)return 0;return *(--(s->top));}Status Stack_Empty(SqStack *s){if(s->top==s->base)return 1;return 0;}Status Stack_Full(SqStack *s){if(s->top-s->base==end)return 1;return 0;}void Stack_printreverse(SqStack s){int *po;po=s.base;printf("\t[%ld]: ",total);for(;po!=s.top;)printf("%d ",*po++);printf("\n");}void search(SqStack *inputPoint,SqStack *tempPoint,SqStack *outputPoint) {if(!Stack_Empty(inputPoint)){Stack_Push(tempPoint,Stack_Pop(inputPoint));search(inputPoint,tempPoint,outputPoint);Stack_Push(inputPoint,Stack_Pop(tempPoint));}if(!Stack_Empty(tempPoint)){Stack_Push(outputPoint,Stack_Pop(tempPoint));search(inputPoint,tempPoint,outputPoint);Stack_Push(tempPoint,Stack_Pop(outputPoint));}if(Stack_Full(outputPoint)){total++;Stack_printreverse(*outputPoint);}}主函数:void main(){SqStack input,temp,output;int i;printf("\n\n\t\t\t\t车厢调度\n");printf("\n\t请输入车厢长度: ");scanf("%d",&end);/*初始化三个栈*/Stack_init(&input);Stack_init(&temp);Stack_init(&output);/*将车厢号码进栈*/for(i=end;i>=1;i--)Stack_Push(&input,i);search(&input,&temp,&output);}1、设计抽象数据类型对应的类定义。

相关文档
最新文档