我需要在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())
我真的很想知道为什么这不起作用,谢谢!
答案 0 :(得分:1)
反向(堆栈)正在产生答案,然后将其抛弃。把它放到一个新变量中;它没有逆转。
答案 1 :(得分:0)
如果您对使用先进先出(FIFO)感兴趣,则应该将Queue实现为数据结构,而不是堆栈。队列的常见实现在应用程序中通常也更灵活,因为它似乎正在尝试完成。