Python实现的堆栈结构示例

一、堆栈结构介绍:

堆栈,是一种容器,可存入数据元素、访问元素、删除元素, 它的特点在于只能允许在容器的一端(称为栈顶,top )进行加入数据(push)和输出数据( pop )的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。
由于栈数据结构只允许在一端进行操作,因而按照后进先出( LIFO, Last In First Out )的原理运作。

二、函数功能:

1 Stack():  创建一个新的空栈
2 push(item):  添加一个新的元素 item 到栈顶
3 pop():  弹出栈顶元素
4 peek():  返回栈顶元素
5 is_empty():  判断栈是否为空
6 size(): 返回栈的元素个数

三、实现代码:

class Stack(object):def __init__(self):self.items = []def is_empty(self):return self.items == []def push(self, item):self.items.append(item)print('push into stack :' + item)def pop(self):return 'pop from stack:' + self.items.pop()def peek(self):return 'item of stack top is:' + self.items[len(self.items) - 1]def size(self):return 'count of stack items is:' + str(len(self.items))if __name__ == "__main__":stack = Stack()stack.push('I')stack.push("use")stack.push('python.')print(stack.size())print(stack.peek())print(stack.pop())print(stack.pop())print(stack.pop())

四、运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/238949.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP/IP_整理起因

先分享一个初级的问题;有个客户现场,终端设备使用客户网络更新很慢,使用手机热点更新速度符合预期;网络部署情况如下: 前期花费了很大的精力进行问题排查对比,怀疑是客户网络问题(其他的客户现…

LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃

LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃 出现下列问题,如何解决? 1. LabVIEW 程序因image.cpp或drawmgr.cpp中的错误而崩溃 2. 正在通过cRIO-9034运行独立的LabVIEW应用程序,但它因drawmgr.cpp中的错误而崩溃 …

013 OpenCV copyMakeBorder(padding)

目录 一、环境 二、原理 三、完整代码 一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、原理 cv.copyMakeBorder是OpenCV库中的一个函数,用于在图像周围添加边框(padding)。这个函数可以用于图…

深入理解前端路由:构建现代 Web 应用的基石(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

python+pytest接口自动化(6)-请求参数格式的确定

我们在做接口测试之前,先需要根据接口文档或抓包接口数据,搞清楚被测接口的详细内容,其中就包含请求参数的编码格式,从而使用对应的参数格式发送请求。例如某个接口规定的请求主体的编码方式为 application/json,那么在…

使用YOLOv8训练自己的数据集

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 拉取项目 git clone https://github.com/ultralytics/ultralytics安装依赖 cd ultralytics pip install -r requirement.txt pip instal…

阿里云开源通义千问720亿参数模型,性能超越大部分商用闭源大模型

12月1日,阿里云举办通义千问发布会,开源通义千问720亿参数模型Qwen-72B。Qwen-72B在10个权威基准测评创下开源模型最优成绩,成为业界最强开源大模型,性能超越开源标杆Llama 2-70B和大部分商用闭源模型。未来,企业级、科…

如何快速看懂市场行情?

一、看大盘指数 咱们平时所说的大盘其实指的就是上证指数,它是整个市场的晴雨表。大盘涨了,个股跟着上涨的概率就大,大盘跌了,个股被拖累下跌的概率也大。所以,要想在股市中尝到甜头,大盘分析是少不了滴&am…

ChatGPT成为“帮凶”:生成虚假数据集支持未知科学假设

ChatGPT 自发布以来,就成为了大家的好帮手,学生党和打工人更是每天都离不开。 然而这次好帮手 ChatGPT 却帮过头了,莫名奇妙的成为了“帮凶”,一位研究人员利用 ChatGPT 创建了虚假的数据集,用来支持未知的科学假设。…

(二) Windows 下 Sublime Text 3 安装离线插件 Anaconda

1 下载 Sublime Text 3 免安装版 Download - Sublime Text 2 下载 Package Control,放到 Sublime Text Build 3211\Data\Installed Packages 目录下。 Installation - Package Control 3 页面搜索 anaconda anaconda - Search - Package Control Anaconda - Pac…

SQL Server 2016(在Products表中查询数据)

1、实验环境。 以实验案例一的结果为环境。 2、需求描述。 【1】查询成本低于10元的水果信息。 【2】将所有蔬菜的成本上调1源。 【3】查询成本大于3元并小于40元的产品信息,并按照成本从高到低的顺序显示结果。 【4】查询成本最高的5个产品信息。 【5】查询有…

Mybatis 的操作(续集)

Mybatis 是一款优秀的 持久性 框架,用于简化 JDBC 的开发 持久层 : 指的就是持久化操作的层,通常指数据访问层(dao),是用来操作数据库的 简单来说 Mybatis 是更简单完成程序和数据库交互的框架 Mybatis 的写法有两种 : 1.xml 2.注解 这两者各有利弊,后面进行总结 Mybati…