栈(stack)
1、通过 deque 实现:
from collections import deque
class Stack():
def __init__(self, value):
# self.stack = deque(value) # 或者用list
self.stack = value
def push(self, value):
"""入栈"""
self.stack.append(value)
def pop(self):
"""出栈"""
return self.stack.pop()
def is_empty(self):
"""判断栈是否为空"""
return bool(self.stack)
def top(self):
"""取出栈中最新的元素"""
return self.stack[-1]
if __name__ == "__main__":
stack = Stack([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print("原始Stack:", stack.stack) # 原始Stack: deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 入栈
stack.push(100)
print("入栈:", stack.stack) # 入栈: deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100])
# 出栈
result_stack = stack.pop()
print("出栈:", result_stack) # 出栈: 100
print("出栈后数据:", stack.stack) # 出栈后数据: deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 判断栈是否为空
is_empty = stack.is_empty()
print("栈是否为空(True:不为空;False:为空):", is_empty) # 栈是否为空(True:不为空;False:为空): True
# 获取栈中最新的元素
latest_elements = stack.top()
print("栈中最新的元素:", latest_elements) # 栈中最新的元素: 10
2、通过 list 实现:
from collections import deque
class Stack():
def __init__(self, value):
self.stack = value
def push(self, value):
"""入栈"""
self.stack.append(value)
def pop(self):
"""出栈"""
self.stack.pop()
def is_empty(self):
"""判断栈是否为空"""
return bool(self.stack)
def top(self):
"""取出栈中最新的元素"""
return self.stack[-1]
if __name__ == "__main__":
stack = Stack([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print("原始Stack:", stack.stack) # 原始Stack: deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 入栈
stack.push(100)
print("入栈:", stack.stack) # 入栈: deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100])
# 出栈
result_stack = stack.pop()
print("出栈:", result_stack) # 出栈: 100
print("出栈后数据:", stack.stack) # 出栈后数据: deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 判断栈是否为空
is_empty = stack.is_empty()
print("栈是否为空(True:不为空;False:为空):", is_empty) # 栈是否为空(True:不为空;False:为空): True
# 获取栈中最新的元素
latest_elements = stack.top()
print("栈中最新的元素:", latest_elements) # 栈中最新的元素: 10