66.颠倒栈。

66.颠倒栈。
题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5}1在栈顶。
颠倒之后的栈为{5, 4, 3, 2, 1}5处在栈顶。

VB.NET codes as below:

Module Module1

Sub Main()

Dim myStack = New Stack(Of Integer)

myStack.Push(1)

myStack.Push(2)

myStack.Push(3)

myStack.Push(4)

myStack.Push(5)

myStack.Push(6)

myStack.Push(7)

myStack.Push(8)

myStack.Push(9)

myStack = ReserveStack(myStack)

For Each item In myStack

Console.WriteLine(item)

Next

Console.ReadKey()

End Sub

Public Function ReserveStack(Of T)(ByVal currentStack As Stack(Of T)) As Stack(Of T)

If currentStack.Count > 1 Then

Dim lastItem As T = GetLastItem(Of T)(currentStack)

ReserveStack(currentStack)

currentStack.Push(lastItem)

End If

Return currentStack

End Function

Private Function GetLastItem(Of T)(ByVal currentStack As Stack(Of T)) As T

Dim lastItem As T

If Not currentStack.Count = 1 Then

Dim item As T = currentStack.Pop()

lastItem = GetLastItem(currentStack)

currentStack.Push(item)

Else

Return currentStack.Pop()

End If

Return lastItem

End Function

End Module

你可能感兴趣的:(栈)