Как я могу перевернуть стек? - PullRequest
1 голос
/ 22 апреля 2011

Мне нужно написать код VB.NET для обращения заданных символов с помощью стека.Ввод: 'S', 'T', 'A', 'C', 'K'

До сих пор я вводил буквы, но я не знаю, как заставить консоль перевернуть их.Я новичок в программировании, поэтому прошу прощения за мое невежество.

Объяснение того, как это делается, также будет с благодарностью.

То, что я получил до сих пор.Модуль Module1

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

Конечный модуль

Вот как это делается.

Ответы [ 4 ]

5 голосов
/ 22 апреля 2011

Скажем, у вас есть стопка тарелок:

1
2
3
4
5

Чтобы перевернуть их, вы снимаете первую тарелку, а затем бросаете ее на новую стопку

2
3
4
5 1

Затем беретеследующую тарелку снимите и бросьте на кучу.

3
4 2
5 1

Повтор!

2 голосов
/ 22 апреля 2011

Псевдокод (я действительно не знаю VB.NET):

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

While (not Stack.IsEmpty) Do WriteCharToOutput(Stack.Pop);
1 голос
/ 26 апреля 2011
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
0 голосов
/ 31 марта 2012

Я не уверен насчет синтаксиса 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);
}
...