输出没有任何结果是怎么回事呀,也没有报错
小天冲冲冲 2017-11-26 02:18:37 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int[] train = new int[] { 5, 8, 1, 7, 4, 2, 9, 6, 3 };
//定义三个缓冲轨
LinkStack<int>[] H = new LinkStack<int>[3];
H[0] = new LinkStack<int>();
H[1] = new LinkStack<int>();
H[2] = new LinkStack<int>();
int num = 1; //当前要进入铁轨的车厢号
int minT = 10; //缓冲轨中编号最小的车厢
int staynum = 0; //minT车厢对应的缓冲轨
for (int j = 8; j <= 0; j--)
{
if (minT != num)
{
if (train[j] == num) //将车厢移入铁轨
{
Console.WriteLine("将车厢{0}移入铁轨", train[j]);
num++;
}
else //将车厢移入缓冲轨
{
Hold(train[j], ref minT, ref staynum, ref H, 3, 9);
}
}
else //将车厢从缓冲轨移入铁轨
{
Output(ref minT, ref staynum, ref H, 3, 9);
}
}
}
//将车厢放入缓冲轨并且修改minT和staynum值
public static void Hold(int c, ref int minT, ref int staynum, ref LinkStack<int>[] H, int k, int n)
{
int x; //车厢索引
int Besttrain = n + 1; //用来寻找最优缓冲轨
int num = 0;
for (int i = 0; i < k; i++)
{
if (!H[i].IsEmpty()) //缓冲轨不为空
{
x = H[i].StackTop; //栈顶元素
if (c < x && x <= minT)
{
Besttrain = i;
staynum = Besttrain;
minT = x;
num = 1;
}
}
else
{
Besttrain = i;
num = 1;
break;
}
}
if (num == 0)
{
Console.WriteLine("无可用缓冲轨,需添加缓冲轨");
}
else
{
H[Besttrain].Push(c);
Console.WriteLine("将车厢{0}移入缓冲轨{1}", c, Besttrain + 1);
}
}
//将车厢从缓冲轨移入铁轨并修改minT和staynum值
public static void Output(ref int minT, ref int staynum, ref LinkStack<int>[] H, int k, int n)
{
//for(int i=1;i<=k;i++)
Console.WriteLine("将缓冲轨{0}顶部车厢{1}移入铁轨", staynum, minT);
H[staynum].Pop();
minT =H[0].StackTop ;
staynum = 0;
for (int i = 0; i < k-1; i++)
{
if (minT > H[i + 1].StackTop)
{
minT = H[i + 1].StackTop;
staynum = i + 1;
}
}
}
}
}