C# 在C语言中不使用数组或列表而将多个值推送到堆栈#

C# 在C语言中不使用数组或列表而将多个值推送到堆栈#,c#,stack,C#,Stack,我正试图用一种非常愚蠢和烦人的方式来完成一项非常简单的任务。我必须读取一行输入,表示由空格分隔的几个整数 1 2 3 4 5 我想要的是反转它们我尝试使用.split()拆分它们,然后我想将它们插入堆栈。我的目标是在不使用列表或数组的情况下反转它们。 输入-12345 产出-5 4 3 2 1 目标-不使用数组或列表,而是使用堆栈。这意味着我不能.ToList().ForEach(stackPush())它们。我尝试使用Select,但由于某些原因,它不允许我执行以下操作 string in

我正试图用一种非常愚蠢和烦人的方式来完成一项非常简单的任务。我必须读取一行输入,表示由空格分隔的几个整数

1 2 3 4 5
我想要的是反转它们我尝试使用
.split()
拆分它们,然后我想将它们插入堆栈。我的目标是在不使用列表或数组的情况下反转它们。 输入-12345 产出-5 4 3 2 1 目标-不使用数组或列表,而是使用堆栈。这意味着我不能
.ToList().ForEach(stackPush())
它们。我尝试使用Select,但由于某些原因,它不允许我执行以下操作

 string input = Console.ReadLine().Split().Select(element=>stackOfNumbers.Push(element));

Select在幕后使用IEnumerable,因此我认为这可能是不允许的。这仅用于循环:

var a = "1 2 3 4 5";

var stack = new Stack<char>();

for (int i = a.Length-1; i >= 0; i--)
{
    if (a[i] != ' ')
    {
        stack.Push(a[i]);
    }
} 
var a=“1 2 3 4 5”;
var stack=新堆栈();
对于(int i=a.Length-1;i>=0;i--)
{
如果(a[i]!='')
{
栈推(a[i]);
}
} 

Select在幕后使用IEnumerable,因此我认为这可能是不允许的。这仅用于循环:

var a = "1 2 3 4 5";

var stack = new Stack<char>();

for (int i = a.Length-1; i >= 0; i--)
{
    if (a[i] != ' ')
    {
        stack.Push(a[i]);
    }
} 
var a=“1 2 3 4 5”;
var stack=新堆栈();
对于(int i=a.Length-1;i>=0;i--)
{
如果(a[i]!='')
{
栈推(a[i]);
}
} 

下面的代码应该会有所帮助

static void Main(string[] args)
        {
            var input = "1 29 39 4 59";

            var outputStack = new Stack<string>();

            while (!string.IsNullOrWhiteSpace(input))
            {
                var splitIndex = input.IndexOf(" ", StringComparison.Ordinal);
                if (splitIndex < 0)
                {
                    outputStack.Push(input);
                    input = string.Empty;
                }
                else
                {
                    outputStack.Push(input.Substring(0, splitIndex));
                    input = input.Substring(++splitIndex, input.Length - splitIndex);
                }
            }
            while (outputStack.Count > 0)
                Console.WriteLine(outputStack.Pop());
            Console.ReadKey();
        }
static void Main(字符串[]args)
{
var input=“1 29 39 4 59”;
var outputStack=新堆栈();
而(!string.IsNullOrWhiteSpace(输入))
{
var splitIndex=input.IndexOf(“,StringComparison.Ordinal);
如果(拆分索引<0)
{
outputStack.Push(输入);
输入=string.Empty;
}
其他的
{
outputStack.Push(input.Substring(0,splitIndex));
input=input.Substring(++splitIndex,input.Length-splitIndex);
}
}
while(outputStack.Count>0)
Console.WriteLine(outputStack.Pop());
Console.ReadKey();
}

下面的代码应该会有所帮助

static void Main(string[] args)
        {
            var input = "1 29 39 4 59";

            var outputStack = new Stack<string>();

            while (!string.IsNullOrWhiteSpace(input))
            {
                var splitIndex = input.IndexOf(" ", StringComparison.Ordinal);
                if (splitIndex < 0)
                {
                    outputStack.Push(input);
                    input = string.Empty;
                }
                else
                {
                    outputStack.Push(input.Substring(0, splitIndex));
                    input = input.Substring(++splitIndex, input.Length - splitIndex);
                }
            }
            while (outputStack.Count > 0)
                Console.WriteLine(outputStack.Pop());
            Console.ReadKey();
        }
static void Main(字符串[]args)
{
var input=“1 29 39 4 59”;
var outputStack=新堆栈();
而(!string.IsNullOrWhiteSpace(输入))
{
var splitIndex=input.IndexOf(“,StringComparison.Ordinal);
如果(拆分索引<0)
{
outputStack.Push(输入);
输入=string.Empty;
}
其他的
{
outputStack.Push(input.Substring(0,splitIndex));
input=input.Substring(++splitIndex,input.Length-splitIndex);
}
}
while(outputStack.Count>0)
Console.WriteLine(outputStack.Pop());
Console.ReadKey();
}

这适用于“1 2 3 4 5”,但当有人输入更大的数字,例如20 30 482或类似的数字时,它将不起作用,因此它不是我问题的一般解决方案。当然。这段代码可以编译,但它是一段边缘伪代码。我相信你将能够改变它,以适应你的具体目的。请注意string.Split(),因为它返回一个数组,不允许使用数组。这适用于“1 2 3 4 5”,但当有人输入更大的数字,例如20 30 482或类似的数字时,它将不起作用,因此它不是我问题的一般解决方案。当然。这段代码可以编译,但它是一段边缘伪代码。我相信你将能够改变它,以适应你的具体目的。请注意string.Split(),因为它返回一个数组,不允许使用数组。不可能,因为堆栈是数组。堆栈和数组之间的唯一区别是,堆栈只能访问第一个位置,而数组可以访问任何项。所以你需要重新定义你的需求。不可能,因为堆栈是数组。堆栈和数组之间的唯一区别是,堆栈只能访问第一个位置,而数组可以访问任何项。所以你需要重新定义你的需求。