栈:像叠盘子一样,后进先出(Last in First out:简称:LIFO)
队列:像排队打饭一样,先进先出(First in First out, 简称:FIFO)
琐碎知识点:
1.栈:Stack
2. 队列:Queue
3.pop:弹出,通俗讲就是栈的删除操作
4.push:压入,通俗讲就是栈的插入操作
5.栈顶:Stack_Top
6.栈底:Stack_Base
课堂代码实现:
max_size = 100 #先设定最大尺寸
class Sqstack: # 定义一个类
def __init__(self): # 初始化函数
self.elem = [None] * max_size # 设定elem的元素总数
self.top = 0 # 设定空栈
self.base = 0 # 设定空栈
self.stack_size = max_size # 初始化栈的总元素大小
def push(self, e): # 定义压入函数
if self.top - self.base == self.stack_size: # 判断栈是否满
raise Exception("栈满") # 返回栈满提示
self.elem[self.top] = e # 反之,压入
self.top += 1 # top , 然后栈顶加1
def pop(self): #定义弹出函数
if self.top == self.base: # 判断是否为空栈
raise Exception("栈空") # 返回栈空提示
self.top -= 1 # 反之, 栈顶减1
return self.elem[self.top] 返回栈顶元素
def get_top(self): # 定义一个得到栈顶的函数
if self.top == self.base: # 如果栈顶等于栈底
raise Exception("栈空") # 如果栈为空,则返回“栈空”提示语
return self.elem[self.top-1] # 返回最顶层元素
def stack_empty(self): # 定义空栈函数
return self.top == self.base # 返回栈顶等于栈底
def __len__(self): # 定义计算栈元素个数的函数
return self.top - self.base # 计算方法
def allprint(self): #定义栈全部元素打印的函数
print(str(self.elem[: self.top])) # 计算方法
if __name__ == "__main__": # 一个可以让其他文件调用此文件时,下方的全部内容不会被执行的好帮手
s = Sqstack() # 调用初始化函数
s.push(2) # 调用压入函数压入空栈元素
s.push(3) # 同
s.push(4) # 同
s.allprint() # 同
print(len(s)) # 打印此栈的长度
print("pop", s.pop()) # 打印并调用弹出函数,删除最末尾的那个元素
print(len(s)) # 打印现有的栈内元素的个数
s.allprint() # 调用打印函数并执行