-
Notifications
You must be signed in to change notification settings - Fork 81
/
ReverseStack.py
49 lines (36 loc) · 1.11 KB
/
ReverseStack.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"""
Title: Reverse Stack
Given a stack, reverse the items without creating any additional data structures.
Execution: python ReverseStack.py
For more details, check out http://www.byte-by-byte.com/reversestack/
"""
import unittest
def reverse(stack):
if stack == []:
return stack
tmp = stack.pop()
reverse(stack)
insert_at_bottom(stack, tmp)
return stack
def insert_at_bottom(stack, x):
if stack == []:
stack.append(x)
return
tmp = stack.pop()
insert_at_bottom(stack, x)
stack.append(tmp)
class TestReverseStack(unittest.TestCase):
def test_1(self):
stack = [1, 2, 3]
self.assertEqual(reverse(stack), [3, 2, 1])
print("reverse(1->2->3) = 3->2->1")
def test_2(self):
stack = [5, 6, 10, 11, 60, 50]
self.assertEqual(reverse(stack), [50, 60, 11, 10, 6, 5])
print("reverse(5->6->10->11->60->50) = 50->60->11->10->6->5")
def test_3(self):
stack = [3, 2, 1]
self.assertEqual(reverse(stack), [1, 2, 3])
print("reverse(3->2->1) = 1->2->3")
if __name__ == '__main__':
unittest.main()