我需要编写一个VB.NET代码来使用堆栈来反转给定的字符。 输入:'S','T','A','C','K'
到目前为止,我已输入字母,但我不知道如何让控制台反转它。我是编程的初学者,请原谅我的无知。
对于如何完成它的解释也将非常感激。
到目前为止我得到了什么。
模块模块1
Sub Main()
Dim StackObject As New Stack
StackObject.Push("S")
Console.WriteLine(StackObject.Peek)
StackObject.Push("T")
Console.WriteLine(StackObject.Peek)
StackObject.Push("A")
Console.WriteLine(StackObject.Peek)
StackObject.Push("C")
Console.WriteLine(StackObject.Peek)
StackObject.Push("K")
Console.WriteLine(StackObject.Peek)
End Sub
结束模块
我只需要将其反转。
我明白了!
Module Module1
Sub Main()
Dim StackObject As New Stack
StackObject.Push("S")
StackObject.Push("T")
StackObject.Push("A")
StackObject.Push("C")
StackObject.Push("K")
For Each cur As String In StackObject
Console.WriteLine(cur)
Next
End Sub
结束模块
这就是它的完成方式。
答案 0 :(得分:5)
假设你有一堆盘子:
1
2
3
4
5
要反转它们,请取下第一块板,然后将其放入新桩
2
3
4
5 1
然后你把下一个盘子拿下来放在堆上。
3
4 2
5 1
重复!
答案 1 :(得分:2)
伪代码(我真的不懂VB.NET):
While (not end-of-input) Do Stack.Push(ReadNextInputChar);
While (not Stack.IsEmpty) Do WriteCharToOutput(Stack.Pop);
答案 2 :(得分:1)
Module Module1
Sub Main()
Dim StackObject As New Stack
StackObject.Push("S")
StackObject.Push("T")
StackObject.Push("A")
StackObject.Push("C")
StackObject.Push("K")
For Each cur As String In StackObject
Console.WriteLine(cur)
Next
End Sub
End Module
答案 3 :(得分:0)
我不确定VB语法,但这就是我们如何继续反转堆栈。这也是就地的。 (它使用递归)
void appendToStack (std::stack<int> &stk, int newElement)
{
if (stk.empty())
stk.push(newElement);
else
{
int oldElement = stk.top();
stk.pop();
appendToStack (stk, newElement);
stk.push (oldElement);
}
}
void reverseStackInplace (std::stack<int> &stk)
{
if (stk.empty())
return;
int element = stk.top();
stk.pop();
reverseStackInplace(stk);
appendToStack (stk, element);
}