# 顺序表和链表解决了数据怎么存放的问题,栈是一种操作
# 队列:先进先出
# 压栈:push()
# 出栈:pop()
# peek()返回栈顶元素
# is_empty()判断栈是否为空
# size()返回栈的元素个数
class Stack():
# 栈
def __init__(self):
'''对外来讲,不希望操作栈的人直接使用内部容器,如果把容器交给你,就可以直接绕过push和pop,对队头和队尾都进行操作'''
self.__list=[]
def push(self,item):
# 添加一个元素item到栈顶
# 顺序表对于尾部操作复杂度是O(1),对于头部操作复杂度是O(n),顺序表是选尾部操作。链表则选头部操作。
self.__list.append(item)
# self.__list.insert(0,item)
def pop(self):
# 弹出栈顶元素
return self.__list.pop()
# self.__list.pop(0)
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()
s.push(1)
s.push(2)
s.push(3)
s.push(4)
s.push(5)
s.push(6)
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
数据结构:栈操作
最新推荐文章于 2024-10-11 18:53:09 发布