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(),因为它返回一个数组,不允许使用数组。不可能,因为堆栈是数组。堆栈和数组之间的唯一区别是,堆栈只能访问第一个位置,而数组可以访问任何项。所以你需要重新定义你的需求。不可能,因为堆栈是数组。堆栈和数组之间的唯一区别是,堆栈只能访问第一个位置,而数组可以访问任何项。所以你需要重新定义你的需求。