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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值