# coding=utf-8
# 可以使用顺序表(列表)或者链表实现栈
class stack(object):
# 栈的实现
def __init__(self):
self.list = []
# 往栈顶(列表的尾部,因为插入元素时间复杂度低
# 如果使用链表,则使用链表的头部作为栈顶)
# 添加元素
def push(self, item):
self.list.append(item)
# 弹出栈顶元素
def pop(self):
return self.list.pop()
# 返回栈顶元素(列表的最后一个元素)
def peek(self):
# 栈不为空
if self.list:
return self.list[-1]
else:
return None
# 判断栈是否为空,列表最大为私有的,防止外界随意修改
def is_empty(self):
# return self.list == []
return not self.list
# 返回栈的元素个数
def size(self):
return len(self.list)
if __name__ == "__main__":
s = stack()
print("栈是否为空:", s.is_empty())
s.push(1)
s.push(2)
s.push(3)
s.push(4)
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())