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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值