易懂易理解的栈与栈操作(Python实现)

    技术2022-07-12  74

    易懂易理解的栈与栈操作(Python实现)

    栈(Stack)在我们的生活中无处不在,其思想在生活和编程中有着重要的作用,因此对其深入掌握和理解有着重要的意义。

    栈的特点

    栈属于一对一的线性结构,与队列类似,其是一种运算受限的数据结构。 其特点是先进后出(后进先出)。

    栈的基本操作包括

    初始化栈判断栈空判断栈满入栈操作出栈操作其他

    栈的应用

    模拟递归进制转换匹配问题(括号匹配)运算问题(表达式求值)Ctrl+Z(撤回) 总之:生活中类似悔一步棋、撤回消息、访问文件夹等等都用到了栈的思想。

    废话不多说,直接上代码。 栈的基本操作

    """栈 """ 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编程:从入门到实践》人民邮电出版社

    Processed: 0.060, SQL: 9