广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解python数据结构之栈stack
  • 254
分享到

详解python数据结构之栈stack

python栈stackpython数据结构 2022-06-02 22:06:57 254人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

前言 栈(Stack)是一种运算受限的线性表。 按照先进后出(FILO,First In Last Out)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。栈只能在一端进行插入和删除操作。 文章内容包含:

前言

栈(Stack)是一种运算受限的线性表。

按照先进后出(FILO,First In Last Out)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。栈只能在一端进行插入和删除操作。

文章内容包含:

(1)栈的基本格式
(2)压栈 push_stack
(3)出栈 pop_stack
(4)取栈顶 peek_stack

一、栈的基本格式


class Stack():
    def __init__ (self,size):
        self.size = size #栈空间大小
        self.top = -1 #栈中进入一个数据 top 加 1
        self.stack = [] 

    def display_stack(self):#栈stack的打印
        print(self.stack)

if __name__ == "__main__":
    stack = Stack(5) #设定栈空间
    stack.display_stack() #打印栈数据

二、进栈与压栈 push_stack


class Stack():
    def __init__ (self,size):
        self.size = size
        self.top = -1
        self.stack = [] #进栈数据列表
    def display_stack(self):
        print(self.stack)
        
    def push_stack(self,data):
        if len(self.stack ) >= self.size: #当数据数量大于设置的空间,则栈溢出
            print("stack over flow!")
            return
        self.stack.append(data) #没有栈溢出就将数据追加到列表中
        self.top += 1 #栈中每增加一个数据就加 1
        
if __name__ == "__main__":
    stack = Stack(5)
    stack.push_stack(0)
    stack.push_stack(1)
    stack.push_stack(2)
    stack.push_stack(3)
    stack.push_stack(4)
    stack.push_stack(5) #stack空间是 5,这里进栈数据时 6 个,即提示栈溢出stack over flow!
    stack.display_stack()

执行结果:

在这里插入图片描述

三、出栈 pop_stack


class Stack():
    def __init__ (self,size):
        self.size = size
        self.top = -1
        self.stack = [] #进栈数据列表
    def display_stack(self):
        print(self.stack)   
    def push_stack(self,data):
        if len(self.stack ) >= self.size: 
            print("stack over flow!")
            return
        self.stack.append(data)
        self.top += 1 
	
	def pop_stack(self):
        if self.top <= -1: #当top小于等于初始值 -1 时说明stack数据列表为空
            print("stack is empty!")
            return
        ret = self.stack.pop() #stack数据列表不为空就取出最后进的值,列表数据数量就少一个
        self.top -= 1 
        return ret
        
if __name__ == "__main__":
    stack = Stack(5)
    stack.push_stack(0)
    stack.push_stack(1)
    stack.push_stack(2)
    stack.push_stack(3)
    stack.push_stack(4)
    stack.display_stack()
    #进栈数据有 5 个,出栈函数调用了 6 次,就出现了提示stack is empty!
    ret = stack.pop_stack()
    print(ret)
    stack.display_stack()
    ret = stack.pop_stack()
    print(ret)
    stack.display_stack()
    ret = stack.pop_stack()
    print(ret)
    stack.display_stack()
    ret = stack.pop_stack()
    print(ret)
    stack.display_stack()
    ret = stack.pop_stack()
    print(ret)
    stack.display_stack()
    ret = stack.pop_stack()
    print(ret)
    stack.display_stack()

执行结果:

在这里插入图片描述

四、取栈顶 peek_stack


class Stack():
    def __init__ (self,size):
        self.size = size
        self.top = -1
        self.stack = [] 
    def display_stack(self):
        print(self.stack)   
    def push_stack(self,data):
        if len(self.stack ) >= self.size: 
            print("stack over flow!")
            return
        self.stack.append(data) 
        self.top += 1 

	def peek_stack(self):
        if self.top == -1: #当栈内没有数据时 提示 stack is empty!
            print("stack is empty!")
            return
        peek = self.stack[self.top] #栈不为空时,将栈顶的数据提取出来
        return peek
        
if __name__ == "__main__":
    stack = Stack(5)
    stack.push_stack(0)
    stack.push_stack(1)
    stack.push_stack(2)
    stack.push_stack(3)
    stack.push_stack(4)
    stack.push_stack(5) 
    stack.display_stack()
    peek = stack.peek_stack()
    print(peek)

执行结果:

在这里插入图片描述

到此这篇关于详解python数据结构之栈stack的文章就介绍到这了,更多相关Python 栈stack内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解python数据结构之栈stack

本文链接: https://www.lsjlt.com/news/10560.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解python数据结构之栈stack
    前言 栈(Stack)是一种运算受限的线性表。 按照先进后出(FILO,First In Last Out)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。栈只能在一端进行插入和删除操作。 文章内容包含: ...
    99+
    2022-06-02
    python 栈stack python数据结构
  • Python数据结构之栈详解
    目录0. 学习目标1. 栈的基本概念1.1 栈的基本概念1.2 栈抽象数据类型1.3 栈的应用场景2. 栈的实现2.1 顺序栈的实现2.1.1 栈的初始化2.2 链栈的实现2.3 栈...
    99+
    2022-11-13
  • c语言数据结构之栈和队列详解(Stack&Queue)
    目录简介栈一、栈的基本概念1、栈的定义2、栈的常见基本操作二、栈的顺序存储结构1、栈的顺序存储2、顺序栈的基本算法3、共享栈(两栈共享空间)三、栈的链式存储结构1、链栈2、链栈的基本...
    99+
    2022-11-13
  • Golang实现数据结构Stack(堆栈)的示例详解
    目录前言介绍StackStackPushPopPeekLen & Cap & ClearNewStack使用前言 始于此篇,为了学习 Golang 基础,采用了使用 ...
    99+
    2023-05-15
    Golang实现数据结构Stack Golang Stack Golang 堆栈
  • java数据结构之栈的详解
    目录一、栈1.栈的应用1.1括号匹配1.2后缀表达式1.3用栈实现队列1.4最小栈1.5栈的压入和弹出序列总结一、栈 栈的特性就是先进后出,常用方法是入栈(push()),出栈(po...
    99+
    2022-11-12
  • 数据结构[Python--Stack]
    难得有些许空闲,看一下Python的数据结构--Stack,现将几个典型示例进行总结!一、什么是栈     栈是一个有序集合,根据其特性可以称为"先进后出"或"后进先出", 其中添加或删除都发生在同一端,这一端被称为"栈顶",与其对应的叫"...
    99+
    2023-01-31
    数据结构 Python Stack
  • Java数据结构之栈的线性结构详解
    目录一:栈二:栈的实现三:栈的测试四:栈的应用(回文序列的判断)总结一:栈 栈是限制插入和删除只能在一个位置上进行的表,此位置就是表的末端,叫作栈顶。 栈的基本操作分为push(入...
    99+
    2022-11-12
  • 详解C语言数据结构之栈
    目录栈的链式实现主要内容代码实现:总结栈的链式实现 主要内容 (1) 栈包含7个元素,依次是67,3,88,6,1,7,0,采用尾插入法创建 栈,为该栈设置两个指针,一个bottom...
    99+
    2022-11-12
  • JavaScript数据结构与算法之栈详解
    目录1.认识栈2.面向过程方法源码编写栈2.1思考2.2需要实现的方法2.3源码实现,并调用类3.用面向对象的方法来源码书写3.1思考3.2需要实现的方法3.3源码及使用类4.总结1...
    99+
    2022-11-13
  • 数据结构TypeScript之栈和队列详解
    目录栈结构特点出栈和入栈面向对象方法封装栈队列结构特点出队和入队面向对象方法封装队列栈结构特点 栈是线性表的其中一种,用于存储固定顺序的元素,元素增删具有先进后出的特点。 出栈和入...
    99+
    2023-01-30
    TypeScript数据结构栈队列 TypeScript数据结构
  • Javascript数据结构之栈和队列详解
    目录前言栈(stack)栈实现解决实际问题栈的另外应用简单队列(Queue)队列实现队列应用 - 树的广度优先搜索(breadth-first search,BFS)优先队列优先队列...
    99+
    2022-11-13
  • 用Python实现数据结构之栈
    栈是最简单的数据结构,也是最重要的数据结构。它的原则就是后进先出(LIFO),栈被使用于非常多的地方,例如浏览器中的后退按钮,文本编辑器中的撤销机制,接下来我们用Python来具体实现这个数据结构。 栈中的方法 作为一个栈(用S来表示...
    99+
    2023-01-30
    数据结构 Python
  • Java数据结构之栈与队列实例详解
    目录一,栈1,概念2,栈的操作3,栈的实现 4,实现mystack二,队列1,概念 2,队列的实现 3,实现myqueue栈、队列与数组的区别?总结 一,栈 1,概念 在我们软件应用...
    99+
    2022-11-12
  • Python数据结构与算法中的栈详解
    目录0. 学习目标1. 栈的基本概念1.1 栈的基本概念1.2 栈抽象数据类型1.3 栈的应用场景2. 栈的实现2.1 顺序栈的实现2.1.1 栈的初始化2.1.2 求栈长2.1.3...
    99+
    2022-11-13
  • Python数据结构之队列详解
    目录0. 学习目标1. 队列的基本概念1.1 队列的基本概念1.2 队列抽象数据类型1.3 队列的应用场景2. 队列的实现2.1 顺序队列的实现2.2 链队列的实现2.3 队列的不同...
    99+
    2022-11-13
  • Python基础之数据结构详解
    目录一、列表1.1 列表更新元素1.2 列表增加元素1.3 列表删除元素1.4 列表的其他操作二、元组2.1 删除元组2.2 元组的其他操作三、字典3.1 字典删除元素3.2 字典的...
    99+
    2022-11-12
  • Python数据结构之链表详解
    目录0.学习目标1.线性表的链式存储结构1.1指针相关概念1.2指针结构1.3结点1.4结点类2.单链表的实现2.1单链表的初始化2.2获取单链表长度2.3读取指定位置元素2.4查找...
    99+
    2022-11-12
  • Python数据结构之图的存储结构详解
    一、图的定义 图是一种比树更复杂的一种数据结构,在图结构中,结点之间的关系是任意的,任意两个元素之间都可能相关,因此,它的应用极广。图中的数据元素通常被称为顶点 ( V e r t ...
    99+
    2022-11-12
  • Python数据结构与算法中的栈详解(1)
    目录什么是栈构建一个栈总结什么是栈 栈有时也被称作“下推栈”。它是有序集合,添加操作和移除操作总发生在同一端,即栈的 “顶端&rdquo...
    99+
    2022-11-13
  • Python数据结构与算法中的栈详解(2)
    目录匹配括号匹配符号总结匹配括号 接下来,我们使用栈解决实际的计算机科学问题。​ 比如我们都写过这样所示的算术表达式, ( 5 + 6 ) ∗ ( 7 + 8 ) / ...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作