-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathp71两个队列实现一个栈.py
62 lines (53 loc) · 1.54 KB
/
p71两个队列实现一个栈.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
50
51
52
53
54
55
56
57
58
59
60
61
62
# coding:utf-8
class Queue(object):
"""定义一个队列类"""
def __init__(self):
self.__queue = []
def len(self):
return len(self.__queue)
def add(self, item):
self.__queue.append(item)
def pop(self):
if not self.__queue:
return None
else:
return self.__queue.pop(0)
class Stack(object):
"""创建一个栈对象"""
def __init__(self):
self.__queue1 = Queue()
self.__queue2 = Queue()
def len(self):
return self.__queue1.len() if self.__queue1.len() else self.__queue2.len()
def add(self, item):
queue = self.__queue1 if self.__queue1.len() else self.__queue2
queue.add(item)
def pop(self):
if self.__queue1.len() or self.__queue2.len():
if self.__queue1.len():
while self.__queue1.len() > 1:
self.__queue2.add(self.__queue1.pop())
return self.__queue1.pop()
else:
while self.__queue2.len() > 1:
self.__queue1.add(self.__queue2.pop())
return self.__queue2.pop()
return None
if __name__ == '__main__':
# queue = Queue()
# for i in range(1, 11):
# queue.add(i)
# print(queue.len())
# while queue.len():
# print(queue.pop())
stack = Stack()
stack.add(1)
stack.add(2)
stack.add(3)
stack.add(4)
print('========')
print(stack.pop())
print(stack.pop())
print(stack.pop())
print(stack.pop())
print(stack.len())