栈是一个后进先出(LIFO)的数据结构,其工作方式就像生活中常见到的直梯,先进去的人肯定是最后出。栈这个数据结构可以用于处理大部分具有后进先出的特性的程序流 。

在栈中, push 和 pop 是常用术语:
push: 意思是把一个对象入栈
pop: 意思是把一个对象出栈
我们可以设置一个类,用列表来存放栈中的元素的信息,利用列表的append()和pop()方法可以实现栈的出栈pop和入栈push的操作,list.append(obj)意思是向列表添加一个对象obj,list.pop(index=-1)意思是删除指定位置的对象,默认是最后一个对象,也就是说list.pop(),是删除列表中下标最大的元素。
Python代码实现
class Stack:
"""
栈:先进后出
"""
def __init__(self, max_size):
self.max_size = max_size
self.stack = []
self.top = -1
# 入栈
def push(self, item):
if self.full():
raise Exception("stack is full")
else:
self.stack.append(item)
self.top = self.top + 1
# 出栈
def pop(self):
if self.empty():
raise Exception("stack is empty")
else:
self.top = self.top - 1
self.stack.pop()
# 是否为空
def empty(self):
return self.top == -1
# 是否已满
def full(self):
return self.top + 1 == self.max_size
# 栈大小
def size(self):
return len(self.stack)
# 根据下标获取目标
def get(self, index):
return self.stack[index]
# 根据目标获取下标
def index(self, item):
return self.stack.index(item)
# 显示栈内容
def showStack(self):
print(self.stack)
s = Stack(10)
for i in range(8):
s.push(i)
# print(s.full())
# print(s.get(3))
# print(s.size())
# print(s.index(4))
print(s.showStack())
s.pop()
# print(s.size())
print(s.showStack())
网友评论