如何正确反转堆栈?

时间:2014-09-23 15:11:18

标签: python stack reverse

我需要在python中反转堆栈,我的想法是在开头创建一个空堆栈。然后我们测试原始堆栈是否为空,如果是,那么我们没有任何反转;如果没有,每次我们从原始堆栈弹出一个项目时,我们将它推回到空堆栈。这一直持续到原始堆栈没有任何东西弹出。最后,我们将存储堆栈重命名为原始堆栈,然后将其返回。它现在应该有一个相反的顺序。

但问题是,对于下面的单元测试,它永远不会工作,事实证明我得到的临时堆栈没有相反的顺序。

  

def test_reverse(self):

    stack = Stack()
    stack.push(1)
    stack.push(2)
    reverse(stack)
    self.assertEqual(stack.pop(), 1)
    self.assertEqual(stack.pop(), 2)
    self.assertTrue(stack.is_empty())

我真的很想知道为什么这不起作用,谢谢!

2 个答案:

答案 0 :(得分:1)

反向(堆栈)正在产生答案,然后将其抛弃。把它放到一个新变量中;它没有逆转。

答案 1 :(得分:0)

如果您对使用先进先出(FIFO)感兴趣,则应该将Queue实现为数据结构,而不是堆栈。队列的常见实现在应用程序中通常也更灵活,因为它似乎正在尝试完成。