66.颠倒栈。

本文介绍了一种使用递归方法颠倒栈中元素顺序的算法,并提供了完整的VB.NET代码示例。通过递归地取出栈底元素并重新构建栈的方式,实现了栈内元素顺序的颠倒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、付费专栏及课程。

余额充值