废话环节
从接触编程开始,就一直听周围年长一点的程序员讨论栈,小小的年纪,脑袋里充满了大大的疑惑,每次都想上前询问,何为栈?
栈的数据存储结构可以是顺序表,也可以是链表,本篇博客我们使用 Python 来实现顺序栈
来自度娘的解释(听的云里雾里的)
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
歪歪歪…,醒醒看完了,这就是栈
博主今天希望用Python语言为大伙们讲透栈
栈(Stack)
简而言之:先进后出
栈(stacks)是一种数据结构,只能在一端进行插入和删除操作的特殊线性表, 它按照先进后出的原则存储数据(Last In First Out - LIFO)。
Stack基础语法
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/3/19 13:01
# @Author : HaoXuan
# @File : 02_栈.py
# @Software: PyCharm
'''
栈底 1 2 3 栈顶
Stack()创建一个空的新栈,它不需要参数并且返回一个空栈。
push(item)将一个新项目添加到栈的顶部,它需要item做参数并返回任何内容。
pop()从栈中删除顶部项,它不需要参数并返回item。栈被修改。
peek()从栈后返回顶部项,但不会删除它。不需要参数,不修改栈。
isEmpty()测试栈是否为空。不需要参数并且返回布尔值。
size()返回栈中的item数量。不需要参数并返回一个整数。
Stack:先进后出
'''
顺序栈(框架)
class Stack():
def __init__(self):
self.items= [] #在程序中开辟一块区域,构建一个空栈
def push(self,item):
self.items.append(item)
def pop(self):
return self.items.pop() #从列表中pop出值
def peek(self):
return len(self.items)- 1 #返回栈顶元素的索引
def isEmpty(self):
return self.items ==[] #如果返回的是True则Stack为空
def size(self):
return len(self.items)
测试程序
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print('栈顶索引为:',stack.peek())
print(stack.isEmpty())
print('元素个数为:',stack.size())
print(stack.pop())
print(stack.pop())
print(stack.pop())
运行反馈
博主个人认为栈属于一个预存储,可以理解为(一端操作,先进后出,后进先出)
希望本篇栈的基础只是能够帮到各位小伙伴,博主一直在努力写好每一篇博客,每次的实例代码都是博主亲手测试,修改,并且对不好理解的部分进行了注释,截取最简单易懂的部分,进行发表,只希望大家能够更好理解数据结构,我们一起加油💪奥里给