这个用栈调度火车的程序到底是怎么回事?

下面是一个用栈来实现火车调度的程序,其中,in代表初始的车列顺序,transter代表用来调度的火车轨,out代表调度后的火车轨,程序功能如下,如果in中车列顺序为,123,经过调度后,out为五种,321,231,213,132,123.但是本人菜鸟啊,虽然好不容易在网上找到一个程序,但是却看不明这个程序啊!真是郁闷,希望有哪位大虾能给俺解释解释。多谢!

#include

#include

using namespace std;

int print(stack a) //输出

{

stack b;

while(!a.empty())

{

b.push(a.top());

a.pop();

}

while(!b.empty())

{

cout<

b.pop();

}

cout<

return 0;

}

int sort(int n,long &sum,stack in,stack transfer,stack out)

{

if(in.empty()&&transfer.empty())

{

print(out);

sum++;

return 0;

}

if(!in.empty())

{

int temp=in.top();

transfer.push(temp); //从in中弹出一个元素,并压入transfer

in.pop();

sort(n,sum,in,transfer,out); //递归调用

transfer.pop(); //弹出transfer的头元素(在这一层中,刚从a中传进来的)

in.push(temp);

}

if(!transfer.empty())

{

out.push(transfer.top()); //从transfer中弹出一个元素,并压入out

transfer.pop();

sort(n,sum,in,transfer,out); //递归调用

}

return 0;

}

int main()

{

stack in,transfer,out;

cout<

int n;

cin>>n;

for(int i=0;i

in.push(n-i);

long sum=0; //可能情况的总数

sort(n,sum,in,transfer,out);

cout<

return 0;

}

[此贴子已经被作者于2007-4-5 20:30:01编辑过]

c语言列车调度 栈,这个用栈调度火车的程序到底是怎么回事?相关推荐

  1. 数据结构(C语言版) 第 三 章 栈与队列 知识梳理 + 作业习题详解

    目录 一.栈 0.栈的基本概念 1.栈的实现 2.栈与递归 3.Hanoi塔问题 二.队列 0.队列的基本概念 1.队列的实现 2.循环队列 2.1循环队列的相关条件和公式: 3.链队列 4.链队列完 ...

  2. C语言编程中的“堆”和“栈”七大不同之处

    对于编程初学者来说会接触到一些难以理解的名称,比如堆(heap).栈(stack).堆栈(stack)等.初学开发过程中往往让人混淆不清.今天我们来谈谈堆和栈的具体区别,来帮助初学者理清思路. 堆和栈 ...

  3. c语言建立栈(顺序栈、双栈和链式栈)

    c语言建立栈 顺序存储 栈的顺序存储定义 初始化栈 入栈操作 出栈操作 其余操作 读取栈顶元素 栈中元素个数 栈是否为空 双栈 双栈的顺序存储结构定义 建立双栈 判断栈为空 进栈操作 出栈操作 链式栈 ...

  4. 数据结构与算法(C语言) | 栈和队列——栈(自己做过测试)

    栈是一种重要的线性结构,通常称,栈和队列是限定插入和删除只能在表的"端点"进行的线性表.(后进先出) –栈的元素必须"后进先出". –栈的操作只能在这个线性表的 ...

  5. c语言获取系统剩余内存_C语言编程中的“堆”和“栈”七大不同之处

    更多精彩,请点击上方蓝字关注我们! 对于编程初学者来说会接触到一些难以理解的名称,比如堆(heap).栈(stack).堆栈(stack)等.初学开发过程中往往让人混淆不清.今天我们来谈谈堆和栈的具体 ...

  6. c语言静态变量存在堆还是栈,c 类 static 函数 什么样是静态变量?嵌入式C语言的堆栈管理如何实现...

    C语言中静态变量是什么意思,有什么作用,static在数据类型前面表示什么 最近刚看了C存储类的章节.所以来说说. C语言为变量提供了⑤种不同的存储模型,或者说是存储类. ①个变量可以用存储时期描述, ...

  7. C语言中用链表构建栈讲解,C语言数据结构之使用链表模拟栈的实例

    C语言数据结构之使用链表模拟栈的实例 以下是"使用链表模拟栈"的简单示例: 1. 用C语言实现的版本 #include #include typedef char datatype ...

  8. C语言栈的用法(创建、入栈、出栈、遍历)

    C语言栈的用法(创建.入栈.出栈.遍历) 本篇博客主要简单介绍如何使用C语言构建栈,元素入栈,元素出栈以及遍历所有的栈内元素 1.栈的定义 首先对栈进行定义,构建一个简单的结构体,采用typedef ...

  9. 数据结构(C语言第二版)严蔚敏编,数据结构电子教材,线性表,栈,队列,顺序存储结构,初始化,入栈,出栈,入队,出队,c++

    前言 提示:本篇文章收录严蔚敏编写的数据结构C语言版本 简单介绍一下顺序表,顺序栈,循环队列,的顺序存储结构之间的区别 代码参考严蔚敏编写的<数据结构>,二维码动态演示可扫码可观看. - ...

最新文章

  1. 生成目录树CMD命令(bat文件)
  2. 2015年上海现场赛重现 (A几何, K暴力搜索)
  3. [Java] 蓝桥杯ADV-182 算法提高 前10名
  4. kafka搭建、学习(一)
  5. 数据库物理结构设计-建索引原则
  6. 转:zTree树控件入门之checkbox:如何动态设置节点的checkbox选择框启用与禁用状态(chkDisabled)...
  7. 金蝶如何用计算机,金蝶软件要换电脑用,该怎么处理?
  8. 论学习计划的 重要性
  9. (浙大-19-夏-数据结构学习笔记)二叉树的初步认识
  10. photoshop中怎么绘制虚线
  11. 前端实现QQ聊天气泡
  12. Netty内存池 (5w长文+史上最全)
  13. 自编码器(Auto-encoder)的概念和应用
  14. 搜索 SAP成都研究院廖婧:SAP C4C社交媒体集成概述
  15. 英伟达 jetson xavier agx 开发(2)修改内核设备树
  16. 安卓动态调试七种武器之孔雀翎 – Ida Pro – 蒸米
  17. 解决使用Arduino IDE 下载esp8266开发版很慢的问题(支持任何版本)
  18. 在计算机时代初期,程序员是如何编程的?
  19. 系统备份 矮人dos工具箱
  20. 微信抢号软件_什么微信编辑软件可以处理图片?公众号怎么才能让字写在图片背景上面?...

热门文章

  1. 計算機二級-java-03
  2. 服务器centos安装mysql_centos下安装mysql服务器的方法
  3. linux mongodb服务启动命令行,Linux下安装、启动、停止mongodb
  4. 记一次library cache lock/library cache pin导致的函数编译hang住分析及处理过程
  5. 数据和云,半年文章精选(文末赠书)
  6. 静默错误:Oracle 数据库是如何应对和处理的 ?
  7. vue3,对比 vue2 有什么优点?
  8. 我的编辑器能玩贪吃蛇,一起玩不?
  9. Java之五种遍历Map集合的方式
  10. 一个神奇的bug:OOM?优雅终止线程?系统内存占用较高?