栈(Stack)在我们的生活中无处不在,其思想在生活和编程中有着重要的作用,因此对其深入掌握和理解有着重要的意义。
栈属于一对一的线性结构,与队列类似,其是一种运算受限的数据结构。 其特点是先进后出(后进先出)。
废话不多说,直接上代码。 栈的基本操作
"""栈 """ class Stack(): def __init__(self, size): # 初始化栈 ''' :param size: 栈的的大小 ''' self.data = ['null' for i in range(0, size)] # 生成了指定长度(size)的列表 self.size = size self.top = -1 # 栈顶指针进行初始化 def Empty(self): # 判断栈是否为空 if self.top == -1: return True else: return False def Full(self): # 判断时候满栈 if self.top == self.size - 1: # 下标为:size-1 return True else: return False def push(self, content): # 入栈的功能实现 """ :param content: 新元素数据 :return: """ if self.Full(): print("The Stack is over!") else: self.top = self.top + 1 self.data[self.top] = content def pop(self): # 出栈的功能实现 if self.Empty(): print("The stack is Empty,is not element@") else: print(self.data[self.top]) # 先取元素 self.data[self.top] = 'null' # 再把元素置空 self.top = self.top - 1 # 最后栈针光写了方法不用肯定不爽,下面就来用一下。 栈的使用
if __name__ == '__main__': s = Stack(4) # 调用类时可以直接传入类参数,原因:__init__ 方法! print("是否为空栈:", s.Empty()) s.push("AAA") s.push("BBB") s.push("CCC") s.push("DDD") s.push("EEE") # 提示:The Stack is over! 超过栈容 print("是否已满栈:", s.Full()) s.pop(), s.pop(), s.pop(), s.pop() # 入栈顺序和出栈顺序刚好相反运行结果:
是否为空栈: True The Stack is over! 是否已满栈: True DDD CCC BBB AAA多日后,我发现理解栈的工作原理比会手写一个栈更重要,因此分享了这一段代码,希望能对姥爷们理解栈有帮助, 参考了Eric Matthes大佬《Python编程:从入门到实践》相关内容,结合个人理解进行的分享,欢迎各位大佬批评指正。
参考文献:埃里克·马瑟斯 《Python编程:从入门到实践》人民邮电出版社