Python数据结构-----栈1.0(栈的介绍与操作)

这篇具有很好参考价值的文章主要介绍了Python数据结构-----栈1.0(栈的介绍与操作)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

栈的介绍

Python栈的操作

1.创建栈

2.判断栈是否为满

 3.判断栈是否为空

 4.压栈

5.出栈

6.展示栈数据

7.获取到栈顶的数据

8.获取到栈的数据总数

第三方模块实现栈

下载模块:

导入模块: 

使用示例:


前言:

        栈,作为经典的数据结构之一,在很多时候我们都会用到栈,跟链表一样同为线性表,但栈是一种后进先出的数据结构类型,这一点跟前面讲的链表不同。好,那这一期我们就来讲讲栈,以及怎么去通过Python去实现栈等相关操作。

栈的介绍

        在日常生活中,我们很多事物都跟栈相关,比如说把一堆书叠起来,书是从下往上叠放的,但当我们想去取书的时候,我们会先把上面的数拿走然后往下找到我们想要的数。这就是栈的表现了。图解如下:

python 栈,Python数据结构,数据结构,链表,java,python,高级编程

在我们的程序当中,栈也是无时无刻在体现出来,就以网页前端开发为例子,当我们点进去一个网页时,网页会有一个返回上一级的按钮,当我们点击它,我们就会返回到上一个页面,这就是前端设计者利用栈设计出来的python 栈,Python数据结构,数据结构,链表,java,python,高级编程

图解: 

python 栈,Python数据结构,数据结构,链表,java,python,高级编程

python 栈,Python数据结构,数据结构,链表,java,python,高级编程

 栈是包含栈底和栈定这两端,当我们往栈里面放入数据时,数据会往栈底压下去,这个过程叫做压栈;当我们取出栈顶的数据时,数据是从栈的顶部依次取出,这个过程叫出栈。那下面就一期来看看怎么通过Python语言去操作栈。

Python栈的操作

        Python是一门具有良好面对对象操作的语言,我们可以去通过Python来实现自定义对象的操作,对此我们可以去定义class 出一个栈对象。同时Python当中是有其本身的数据容器的,我们可以通过链表来作为栈的数据容器,通过栈的特点去对列表进行‘改造’。下面就一起来看看吧。

相关操作如下: 

python 栈,Python数据结构,数据结构,链表,java,python,高级编程

整体代码如下:

#栈对象
class Stack(object):
    #创建一个空栈
    def __init__(self,size,top=-1):
        self.size=size #栈的大小
        self.top=top    #栈的栈顶,初始化为-1
        self.stackdata=[] #空列表,作为数据容器
    #判断这个栈是否满了
    def isfull(self):
        return self.top+1==self.size 
    #判断在栈是否为空栈
    def isEmpty(self):
        return self.top==-1
    #压栈,放入数据
    def push(self,val):
        if self.isfull(): #要做判断这个栈满了没有
            print('stack is full')
            return
        else:
            self.stackdata.append(val)
            self.top+=1
    #出栈,取出数据
    def pop(self):
        if self.isEmpty():#要判断这个栈是否为空
            print('empty')
            return
        else:
            self.stackdata.pop(self.top)
            self.top-=1
    #展示栈数据(也就是输出列表)
    def showstack(self):
        print(self.stackdata)
    #获取到栈顶的数据
    def peek(self):
        if self.top!=-1:
            return self.stackdata[self.top]
    #返回这个栈多少个数据项
    def size(self):
        return len(self.stackdata)

下面我会进行一一讲解:

1.创建栈

作为一个栈是有大小,有栈顶指针以及数据存放位置的,那我们就依次建立这些功能,初始化栈顶指针为-1,当我们放入第一个数据的时候,栈顶指针就加一为0,此时正好对应列表第一个数据的下标0。代码如下:

class Stack(object):
    #创建一个空栈
    def __init__(self,size,top=-1):
        self.size=size #栈的大小
        self.top=top    #栈的栈顶,初始化为-1
        self.stackdata=[] #空列表,作为数据容器

2.判断栈是否为满

栈是有大小的,这一点跟纯粹的列表不同,列表你可以放无限个数据进去,但是栈得控制好数据的数量,所以我们在放入数据之前要定义好判断这个栈是否为满的方法,如果满了那就返回False,不允许数据的存入。代码如下:

    #判断这个栈是否满了
    def isfull(self):
        return self.top+1==self.size

 3.判断栈是否为空

同样的,取数据之前我们也要去判断这个栈里面有没有数据,也就是判断这个栈是否为空,如果是空栈的话,那就返回True,说明无法取出数据。代码如下:

    #判断在栈是否为空栈
    def isEmpty(self):
        return self.top==-1

 4.压栈

每次压入一个数据的时候,栈顶就得往上移动一位加一

  #压栈,放入数据
    def push(self,val):
        if self.isfull(): #要做判断这个栈满了没有
            print('stack is full')
            return
        else:
            self.stackdata.append(val)
            self.top+=1

5.出栈

同样的,每次出栈一个数据的时候,栈顶就得向下移动一位减一

  #出栈,取出数据
    def pop(self):
        if self.isEmpty():#要判断这个栈是否为空
            print('empty')
            return
        else:
            self.stackdata.pop()
            self.top-=1

6.展示栈数据

    #展示栈数据(也就是输出列表)
    def showstack(self):
        print(self.stackdata)

7.获取到栈顶的数据

    #获取到栈顶的数据
    def peek(self):
        if self.top!=-1:
            return self.stackdata[self.top]

8.获取到栈的数据总数

   #返回这个栈多少个数据项
    def size(self):
        return len(self.stackdata)

第三方模块实现栈

其实已经有人去写了关于栈的第三方模块了,我们只需要从整个模块里面去导入栈的类对象就行了,然后就可以直接去实例化栈对象,进行栈的相关功能操作

下载模块:

python 栈,Python数据结构,数据结构,链表,java,python,高级编程

导入模块: 

from pythonds.basic.stack import Stack

使用示例:

from pythonds.basic.stack import Stack
if __name__=='__main__':
    s=Stack()
    print(s.isEmpty())
    s.push(1)
    s.push('hello')
    print(s.peek())
    print(s.size())
    s.push(8.886)
    print(s.isEmpty())
    s.pop()
    s.pop()
    print(s.size())
    #输出结果:
    # True
    # hello
    # 2
    # False
    # 1

当然,我并不建议这样子用,最后好我们还是直接去写一个栈的对象,我们可以去根据需求去添加方法,而不是去用别人的。

好了,以上就是本期的全部内容了,我们下期见!

分享一张壁纸:

python 栈,Python数据结构,数据结构,链表,java,python,高级编程文章来源地址https://www.toymoban.com/news/detail-733351.html

到了这里,关于Python数据结构-----栈1.0(栈的介绍与操作)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】 顺序栈的基本操作 (C语言版)

    目录 一、顺序栈 1、顺序栈的定义: 2、顺序栈的优缺点 二、顺序栈的基本操作算法(C语言)    1、宏定义  2、创建结构体 3、顺序栈的初始化  4、顺序栈的入栈 5、顺序栈的出栈 6、取栈顶元素 7、栈的遍历输出 8、顺序栈的判空 9、顺序栈的判满  10、求顺序栈长度 11、顺

    2024年01月24日
    浏览(51)
  • 数据结构学习——C语言对栈的基本操作

             栈(Stack)是一种常用的数据结构,遵循先进后出(LIFO)的原则,对表尾进行操作,常用于临时存储和撤销等操作,其基本操作包括栈的创建、入栈(也叫压栈Push)、出栈(又称弹栈)、栈的遍历、栈的清空(clear)、栈的销毁(destroy)等。         栈的创建有两种方式,一种是通

    2024年02月07日
    浏览(56)
  • 【数据结构】栈和队列(栈的基本操作和基础知识)

    🌈个人主页: 秦jh__ https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343 🔥 系列专栏: 《数据结构》 https://blog.csdn.net/qinjh_/category_12536791.html?spm=1001.2014.3001.5482 目录  前言 栈 栈的概念和结构 栈的实现 ​编辑 数组栈的实现 总的声明 初始化  插入 删除 取栈顶元素 销毁 判断是否为空

    2024年02月03日
    浏览(51)
  • 数据结构-----栈(栈的初始化、建立、入栈、出栈、遍历、清空等操作)

    目录 前言 栈 1.定义 2.栈的特点 3.栈的储存方式 3.1数组栈 3.2链栈  4.栈的基本操作(C语言) 4.1初始化   4.2判断是否满栈 4.3判断空栈  4.4 入栈 4.5 出栈 4.6获取栈顶元素  4.7遍历栈  4.8清空栈  完整代码示例         大家好呀!今天我们开始学习新的线性表结构----栈,前面

    2024年02月06日
    浏览(34)
  • Python教程(12)——Python数据结构集合set介绍

    集合是一种无序、可变的数据结构,它也是一种变量类型,集合用于存储唯一的元素。集合中的元素不能重复,并且没有固定的顺序。在Python 提供了内置的 set 类型来表示集合,所以 set 就是集合的意思。 你可以使用大括号 {} 或者 set() 函数来创建一个集合。 需要注意

    2024年02月10日
    浏览(33)
  • 数据结构:使用顺序栈的基本操作,实现十进制转为二进制,十六进制的转换

    使用系统环境: 1:win10,使用工具dev 2:使用系统win10 3:参考书籍数据结构(C语言版——严蔚敏 吴伟民) ( 注意:此文章默认,学习者拥有一定的数据机构栈,C语言的知识,书籍第20页,2.1算法的代码进行一个简化。)

    2024年02月05日
    浏览(64)
  • 【数据结构】顺序栈和链栈的基本操作(定义,初始化, 入栈,出栈,取栈顶元素,遍历,置空)

    🎊专栏【数据结构】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【勋章】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰   目录 ⭐栈的分类 ✨顺序栈 🎈优点: 🎈缺点: ✨链栈 🎈优点: 🎈缺点: ⭐基本概念 ✨栈: ✨栈顶: ✨栈顶: ✨图片理

    2023年04月22日
    浏览(54)
  • 【数据结构】顺序栈的基本操作:出栈、入栈、取栈顶元素、输出所有栈中元素、括号匹配题目

    栈是限定仅在表位进行插入或删除操作的线性表。栈的表尾称为栈顶,表头称为栈底。不含元素的栈称为空栈。 左图为栈的示意图,右图为用铁路调度表示栈。 如下是入栈至栈满再进行出栈的过程示意图。值得注意的是,栈满后,top指针指向的不是顶端元素,而是顶端的下

    2024年02月07日
    浏览(52)
  • Python基础数据结构和操作

    字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。 注意:控制台显示结果为 class \\\'str\\\' , 即数据类型为str(字符串)。 1.1 字符串特征 一对引号字符串 三引号字符串 注意:三引号形式的字符串支持换行。

    2024年01月20日
    浏览(45)
  • Python实现数据结构的基础操作

    目录 一、列表(List) 二、字典(Dictionary) 三、集合(Set) 四、链表的实现 五、队列和栈    数据结构是计算机科学中非常重要的概念,它用于存储和组织数据以便有效地进行操作。Python作为一种功能强大且易于学习的编程语言,提供了许多内置的数据结构和相关操作。在

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包