2011-04-21 78 views
1

我需要编写一个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

向我们展示您到目前为止的代码,并告诉我们它有什么问题。 – 2011-04-21 22:46:41

+0

虽然我认为你的导师可能希望你使用Pop()而不是foreach,但它起作用。如果你有兴趣尝试使用其他方法来做,它应该只是几行。 – 2011-04-22 00:01:45

+0

@Evan Trimboli我会如何使用流行音乐?我尝试过,但没有奏效,我删除了那段代码重新开始。 – 2011-04-22 00:42:54

回答

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 
5

说您有板的堆叠:

1 
2 
3 
4 
5 

要反转它们,则取第一板关闭,然后拖放到一个新的桩

2 
3 
4 
5 1 

然后在进行下一个板把它放在堆上。

3 
4 2 
5 1 

重复!

+1

完美,并很好地说明。做得好。 – duffymo 2011-04-21 22:49:28

+0

这是有道理的,你说什么,但我只是不知道如何做到这一点。 – 2011-04-21 23:00:20

+0

两个堆栈 - 你的和另一个是“新堆”。 – duffymo 2011-04-22 00:07:28

2

伪代码(我真的不知道VB.NET):

While (not end-of-input) Do Stack.Push(ReadNextInputChar); 

While (not Stack.IsEmpty) Do WriteCharToOutput(Stack.Pop); 
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); 
}