C#(链栈)实现火车重排问题
来源:互联网 发布:必修三数学算法初步 编辑:程序博客网 时间:2024/05/22 03:13
实现链栈的重排:
我创建了一个TrainRoad的类,这个类就是用来进行重排操作的类,这个类主要有三个函数,1重排函数,2是进入缓冲轨道函数,3是出缓冲轨道函数,下面我们来看代码的实现:
class TrainRoad{ private IStack<int>[] _allRoad; private int _nextOut = 1; private int _UniqueMaxSize; private int _len; private int _minRoad = 0; private int _minTrain; // 初始化总共的轨道数,n个缓冲+1个最终,缓冲的最大容量 public TrainRoad(int n, int max) { _allRoad = new LinkStack<int>[n + 1]; for (int i = 0; i < n + 1; i++) { _allRoad[i] = new LinkStack<int>(); } _len = n; _UniqueMaxSize = max; } // 重排函数 public void Railroad(int[] p) { int len = p.Length; _minTrain = len; for (int i = 0; i < len; i++) { if (p[i] == _nextOut) { Console.WriteLine("Move Car {0} from input to output", p[i]); _nextOut++; while (_minTrain == _nextOut) { this.OutRoad(2 * len); _nextOut++; } } else { this.IntoRoad(p[i]); } } } // 进入缓冲轨道 public void IntoRoad(int train) { int best = 0; for (int i = 0; i < _len; i++) { if (!_allRoad[i].IsEmpty() && _allRoad[i].Length <= _UniqueMaxSize) { if (train < _allRoad[i].StackTop) { best = i; Console.WriteLine("Move Car {0} from input to holding track {1}", train, i); break; } } else if (_allRoad[i].IsEmpty()) { best = i; Console.WriteLine("Move Car {0} from input to holding track {1}", train, i); break; } else { continue; } } _allRoad[best].Push(train); if (train < _minTrain) { _minTrain = train; _minRoad = best; } } // 将车厢移动到最终轨道 public void OutRoad(int len) { int train = _allRoad[_minRoad].StackTop; Console.WriteLine("Move Car {0} from holding track {1} to output", _minTrain, _minRoad); _allRoad[_minRoad].Pop(); _minTrain = len; _minRoad = 0; for (int i = 0; i < _len; i++) { if (!_allRoad[i].IsEmpty()) { int min = _allRoad[i].StackTop; if (min < _minTrain) { _minTrain = min; _minRoad = i; } } } }}
0 0
- C#(链栈)实现火车重排问题
- 火车车厢重排问题
- 火车车厢重排/队列实现
- Algorithm学习笔记 --- 铁轨(火车重排问题)
- 队列的应用——火车重排(java实现)
- 火车车厢重排(链队列)
- 数据结构(2)——链表形式的堆栈,以及火车车厢重排问题
- 数据结构与算法C++描述(7)---堆栈及其在“火车车厢重排问题”中的应用
- 火车车厢重排(栈式实现与队列实现)
- C++ Stack Example Rearranging RailRoad Cars 火车车厢重排问题
- C++ Queue Example Rearranging RailRoad Cars 火车车厢重排问题
- 火车车厢重排
- 火车车厢重排
- 【C语言版】CCF火车购票问题(201609-2)
- 数据结构_链队列实验——火车车厢重排问题
- 问题 C: 瑞神要考研(重排链表)
- 队列的应用--火车车厢重排列
- C语言实现火车售票系统
- 问题:oracle数据库可以拆开两方面来理解:怎样存储的空间安排 和 怎样控制操作?
- [Android]百度地图初使用(2)
- LintCode-剑指Offer-(105)复制带随机指针的链表
- 这算是断点续传的雏形么?
- 今天记起来的一些基础
- C#(链栈)实现火车重排问题
- 【黑马程序员】反射
- LightOJ 1068 - Investigation (数位dp)
- struts2 国际化
- Lua 入门学习教程(二) 函数 与 回调函数
- AIX 下lsnrctl start 错误
- 【C#】delegate委托的定义和使用方法
- 计算机操作系统之内存管理
- 郁闷啊,三点多钟还没睡,休息一下,看下摸胸小苹果。