目录
堆栈
特性:后进先出
栈是限定仅在表尾进行插入或删除操作的线性表。
栈顶(top)表尾元素,允许插入和删除的一端
栈底(bottom)表头元素,不允许插入和删除的一端。
空栈 表中没有元素
入栈(PUSH)最先插入的元素放在栈的底部
出栈(POP)最后插入的元素先出
顺序栈的基本操作
初始化
class Stack(object):
def __init__(self): #初始化
self.items=[] #这里把栈看成一个列表
判断是否为空
def is_empty(self): #判断栈是否为空
return self.items==[] #返回布尔类型
加入元素
def push(self,item): #加入元素
self.item.append(item) #append在列表尾部添加元素
弹出元素
def pop(self): #弹出元素
return self.items.pop() #列表中的方法直接调用
返回栈顶元素
def peek(self): #返回栈顶元素
return self.item[len(self.items)-1] #len(self.items)-1则是栈顶的位置
返回栈的大小
def size(self): #返回栈的大小
return len(self.items)
最后实例:
class Stack(object):
def init(self): #初始化
self.items=[]
def is_empty(self): #判断栈是否为空
return self.items==[]
def push(self,item): #加入元素
self.items.append(item)
def pop(self): #弹出元素
return self.items.pop()
def peek(self): #返回栈顶元素
return self.items[len(self.items)-1]
def size(self): #返回栈的大小
return len(self.items)
if name == "__main__":
stack = Stack()
print(stack.is_empty())
print(stack.size())
stack.push(1)
print(stack.peek())
stack.push(2)
print(stack.peek())
stack.push(3)
print(stack.peek())
stack.pop()
print(stack.peek())
stack.pop()
print(stack.peek())
stack.pop()
print(stack.is_empty())
print(stack.size())