-
栈(stack),它是一种运算受限的线性表,后进先出(LIFO)
-
LIFO(last in first out)表示就是后进入的元素, 第一个弹出栈空间. 类似于自动餐托盘, 最后放上的托盘, 往往先把拿出去使用.
-
其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。
-
向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;
-
从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
-
class Stack:
def __init__(self):
self.items = []
self.size = 0
def push(self, item):
# 在开头插入元素
self.items.insert(0, item)
self.size += 1
return item
def empty(self):
# 判断栈是否为空
return self.size == 0
def pop(self):
# 弹出栈顶元素
if self.empty():
return None
else:
self.size -= 1
return self.items.pop(0)
def peek(self):
# 显示栈顶元素
if self.empty():
return None
else:
return self.items[0]
def clear(self):
self.items.clear()
self.size = 0
return "clear成功"
def si_ze(self):
return self.size
s1 = Stack()
# 数据输入
s1.push(1)
s1.push(22)
s1.push(333)
s1.push(4444)
s1.push(55555)
# 查看栈列表
print(s1.items)
# 弹出栈顶元素
print(s1.pop())
# 查看栈顶元素
print(s1.peek())
# 继续弹出栈顶元素检查peek是否正确
print(s1.pop())
# 返回元素个数
print(s1.si_ze())
# 清空栈
print(s1.clear())
print(s1.si_ze())