【发布时间】:2014-09-23 15:11:17
【问题描述】:
我需要在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())
我真的很想知道为什么这不起作用,谢谢!
【问题讨论】:
-
你见过 reversed() 函数吗?
-
@MattBall,是的,我明白,原始堆栈中的顶部项目进入临时堆栈的底部,然后当我们从临时堆栈中弹出项目时,我们应该得到相反的顺序。 :(
-
你不需要
stack = reverse(stack)而不是reverse(stack)吗? -
@PradeepKumar 试过了,没用 :(
-
您可能还需要将
temp = temp.push(stuff)替换为temp.push(stuff),因为您已经有了临时堆栈。虽然没有测试。试试吧。