广告
返回顶部
首页 > 资讯 > 后端开发 > Python >数据结构(二):栈
  • 657
分享到

数据结构(二):栈

数据结构 2023-01-31 00:01:41 657人浏览 独家记忆

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

摘要

栈:后进先出(LIFO)表。 特点:只允许在顶部进行存取操作的顺序表。 基本操作: push:入栈,即将元素压入栈顶 pop:出栈,即将栈顶元素删除 top:输出栈顶元素 应用场景: 平衡符号:编译器中用于检查符号是否成对出现,方

:后进先出(LIFO)表。

特点:只允许在顶部进行存取操作的顺序表。

基本操作

  • push:入栈,即将元素压入栈顶
  • pop:出栈,即将栈顶元素删除
  • top:输出栈顶元素

应用场景

  • 平衡符号:编译器中用于检查符号是否成对出现,方法为做一个空栈,读取字符,如果字符是一个开放符号如“{”、“(”、“[”等,将其压入栈中。如果字符是一个封闭符号,如“}”、“)”、“]”,此时如果栈为空,说明有字符没有成对出现;否则将栈元素弹出,如果弹出的符号不是对应的开放符号,同样说明没有成对出现;如果字符读取完毕时栈不为空,也说明字符没有成对出现。
  • 函数调用:函数在调用的时候,需要存储所有的重要信息,如变量名、返回地址等,这些信息就是通过栈来存储,然后控制转移到新的函数,当函数返回时从栈中取出存储的信息,继续从转移前的位置往下执行。递归函数对栈的使用开销极大,而且很容易导致栈溢出,可以通过栈操作来模拟递归过程。

栈的链表实现:

 1 class node(object):
 2     def __init__(self, value=None, next=None):
 3         self.value = value
 4         self.next = next
 5 
 6 
 7 class Stack(object):
 8     def __init__(self, maxsize=8):
 9         self._head = Node() # 表头,无实际意义
10         self._top = None
11         self.maxsize = maxsize
12         self.length = 0
13 
14     def pop(self):
15         if self.length > 0:
16             node = self._head.next
17             self._head.next = node.next
18             self.length -= 1
19             self._top = self._head.next
20         else:
21             raise Exception('Empty stack')
22 
23     def push(self, value):
24         if self.length >= self.maxsize:
25             raise Exception('Stack is full')
26         node = Node(value)
27         node.next = self._head.next
28         self._head.next = node
29         self.length += 1
30         self._top = self._head.next
31 
32     def top(self):
33         if self.length > 0:
34             return self._top.value
35         else:
36             raise Exception('Stack is empty')
37 
38     def __len__(self):
39         return self.length

栈的数组实现:

 1 from array import array
 2 
 3 class Stack(object):
 4     def __init__(self, maxsize=8):
 5         self._array = array('i', range(maxsize))
 6         self.maxsize = maxsize
 7         self.length = 0
 8         self.index = -1
 9         self._top = None
10 
11     def push(self, value):
12         if self.length >= self.maxsize:
13             raise Exception('Stack is full')
14         self.index += 1
15         self._array[self.index] = value
16         self.length += 1
17         self._top = value
18 
19     def pop(self):
20         if self.length <= 0:
21             raise Exception('Stack is empty')
22         self.index -= 1
23         self.length -= 1
24         if self.index >= 0:
25             self._top = self._array[self.index]
26         else:
27             self._top = None
28 
29     def top(self):
30         return self._top
31 
32     def __len__(self):
33         return self.length

 

--结束END--

本文标题: 数据结构(二):栈

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

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

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

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

下载Word文档
猜你喜欢
  • 数据结构(二):栈
    栈:后进先出(LIFO)表。 特点:只允许在顶部进行存取操作的顺序表。 基本操作: push:入栈,即将元素压入栈顶 pop:出栈,即将栈顶元素删除 top:输出栈顶元素 应用场景: 平衡符号:编译器中用于检查符号是否成对出现,方...
    99+
    2023-01-31
    数据结构
  • Java数据结构01——栈
    一、栈         1、栈的性质                 栈(stack)是限定仅在表尾进行插入或者删除的线性表。对于栈来说,表尾端称为栈顶(top),表头端称为栈低(bottom)。不含元素的空表称为空栈。因为栈限定在表尾进行...
    99+
    2023-09-20
    数据结构 java 开发语言
  • 【数据结构】栈与队列
    作者主页:paper jie 的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVA数据结构》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将java...
    99+
    2023-10-23
    数据结构 java 开发语言
  • java数据结构基础:栈
    目录准备工作编码环节push方法pop方法empty方法全部代码总结准备工作 工具:idea+jdk8 技术要求:java基础语法 编码环节 首先,我们得先确定下来,用什么数据来模拟...
    99+
    2022-11-12
  • 【数据结构】Java实现栈
    目录 1. 概念 2. 栈的使用  3. 自己动手实现栈(使用动态数组实现栈)  1. 创建一个MyStack类 2. push入栈 3. pop出栈 4. 查看栈顶元素 5. 判断栈是否为空与获取栈长 6. toString方法 4. 整...
    99+
    2023-10-27
    数据结构 jvm java
  • 疯狂数据结构-栈-Java
    概念 基本概念解读 当谈到 "栈" 时,它是一种遵循后进先出(Last In, First Out,LIFO)原则的有序集合。这意味着最后入栈的元素首先被弹出,而最早入栈的元素最后被弹出。在栈中,只能对最上面的元素进行操作,其他元素都不可见...
    99+
    2023-08-16
    数据结构 java 开发语言
  • 数据结构——栈(C语言)
    需求:无 栈的概念: 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端为栈底。栈中的数据元素遵守后进先出(LIFO)原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈...
    99+
    2023-09-04
    数据结构 c语言 经验分享
  • Python数据结构之栈详解
    目录0. 学习目标1. 栈的基本概念1.1 栈的基本概念1.2 栈抽象数据类型1.3 栈的应用场景2. 栈的实现2.1 顺序栈的实现2.1.1 栈的初始化2.2 链栈的实现2.3 栈...
    99+
    2022-11-13
  • Java数据结构之栈的线性结构详解
    目录一:栈二:栈的实现三:栈的测试四:栈的应用(回文序列的判断)总结一:栈 栈是限制插入和删除只能在一个位置上进行的表,此位置就是表的末端,叫作栈顶。 栈的基本操作分为push(入...
    99+
    2022-11-12
  • 详解python数据结构之栈stack
    前言 栈(Stack)是一种运算受限的线性表。 按照先进后出(FILO,First In Last Out)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶。栈只能在一端进行插入和删除操作。 文章内容包含: ...
    99+
    2022-06-02
    python 栈stack python数据结构
  • java数据结构之栈的详解
    目录一、栈1.栈的应用1.1括号匹配1.2后缀表达式1.3用栈实现队列1.4最小栈1.5栈的压入和弹出序列总结一、栈 栈的特性就是先进后出,常用方法是入栈(push()),出栈(po...
    99+
    2022-11-12
  • 用Python实现数据结构之栈
    栈是最简单的数据结构,也是最重要的数据结构。它的原则就是后进先出(LIFO),栈被使用于非常多的地方,例如浏览器中的后退按钮,文本编辑器中的撤销机制,接下来我们用Python来具体实现这个数据结构。 栈中的方法 作为一个栈(用S来表示...
    99+
    2023-01-30
    数据结构 Python
  • java 数据结构之栈与队列
    java 数据结构之栈与队列一:对列队列是一种先进先出的数据结构实现代码:package Queue; public class Queue { //队列类 private int maxSize; //定义队列的长度 ...
    99+
    2023-05-31
    java 队列
  • Python数据结构-----栈1.0(栈的介绍与操作)
    目录 前言: 栈的介绍 Python栈的操作 1.创建栈 2.判断栈是否为满  3.判断栈是否为空  4.压栈 5.出栈 6.展示栈数据 7.获取到栈顶的数据 8.获取到栈的数据总数 第三方模块实现栈 下载模块: 导入模块:  使用示例: ...
    99+
    2023-10-18
    数据结构 链表 java python 高级编程
  • JavaScript数据结构与栈实例分析
    今天小编给大家分享一下JavaScript数据结构与栈实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2022-10-19
  • 详解C语言数据结构之栈
    目录栈的链式实现主要内容代码实现:总结栈的链式实现 主要内容 (1) 栈包含7个元素,依次是67,3,88,6,1,7,0,采用尾插入法创建 栈,为该栈设置两个指针,一个bottom...
    99+
    2022-11-12
  • Python数据结构的栈实例分析
    这篇文章主要介绍“Python数据结构的栈实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python数据结构的栈实例分析”文章能帮助大家解决问题。1. 栈的基本概念1.1 栈的基本概念栈 (...
    99+
    2023-06-29
  • java数据结构中栈怎么应用
    本篇内容主要讲解“java数据结构中栈怎么应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java数据结构中栈怎么应用”吧!声明一个栈接口SStackpackage ch05;&nb...
    99+
    2023-06-22
  • 数据结构:栈和队列(详细讲解)
    🎇🎇🎇作者: @小鱼不会骑车 🎆🎆🎆专栏: 《数据结构》 🎓🎓...
    99+
    2023-09-14
    数据结构 java 算法
  • Python 数据结构之堆栈实例代码
    Python 堆栈 堆栈是一个后进先出(LIFO)的数据结构. 堆栈这个数据结构可以用于处理大部分具有后进先出的特性的程序流 . 在堆栈中, push 和 pop 是常用术语: push: 意思是把...
    99+
    2022-06-04
    堆栈 数据结构 实例
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作