Python数据结构之实现自定义栈与队列详解

  


概要

在计算机科学中,栈(Stack)和队列(Queue)是两种常见的数据结构。它们在算法和数据处理方面有着广泛的应用。本文将详细介绍如何在Python中实现自定义的栈与队列,并包含详细的示例代码,帮助深入理解这两种数据结构的工作原理和使用方法。


栈(Stack)

什么是栈

栈是一种遵循后进先出(LIFO, Last In First Out)原则的线性数据结构。栈的基本操作包括压栈(push)、弹栈(pop)和查看栈顶元素(peek)。

栈的基本操作

  1. 压栈(push):将元素添加到栈顶。

  2. 弹栈(pop):从栈顶移除元素。

  3. 查看栈顶元素(peek):获取栈顶元素但不移除它。

  4. 检查栈是否为空(is_empty):检查栈是否为空。

  5. 获取栈的大小(size):获取栈中元素的数量。

实现自定义栈

class Stack:
    def __init__(self):
        self.items = []    def is_empty(self):
        return len(self.items) == 0    def push(self, item):
        self.items.append(item)    def pop(self):
        if self.is_empty():
            raise IndexError("pop from empty stack")
        return self.items.pop()    def peek(self):
        if self.is_empty():
            raise IndexError("peek from empty stack")
        return self.items[-1]    def size(self):
        return len(self.items)    def __str__(self):
        return "Stack: " + str(self.items)# 示例
stack = Stack(

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

i5 13490F比13400F性能强多少?13490F和i5 13400F性能对比评测

英特尔再一次带来了13代全新的中国特供版的小黑盒,即酷睿i5-13490F和i7-13790F这两款型号,这两款CPU相当于i5 13400F和i7 13700F升级版,拥有更高的频率和三级缓存,以获得更好的游戏性能。我们知道,i5 13490F是用作替代…

LLM 应用开发平台特训

引言 随着人工智能技术的飞速发展,大型语言模型(LLM)如 GPT 系列已成为构建智能应用的重要基础。LLMOps(Large Language Model Operations)作为管理 LLM 支持的应用程序生命周期的工具和最佳实践,正逐渐受到…

【 香橙派 AIpro评测】烧系统运行部署LLMS大模型跑开源yolov5物体检测并体验Jupyter Lab AI 应用样例(新手入门)

文章目录 一、引言⭐1.1下载镜像烧系统⭐1.2开发板初始化系统配置远程登陆💖 远程ssh💖查看ubuntu桌面💖 远程向日葵 二、部署LLMS大模型&yolov5物体检测⭐2.1 快速启动LLMS大模型💖拉取代码💖下载mode数据&#x…

C++树(二)【直径,中心】

目录: 树的直径: 树的直径的性质: 性质1:直径的端点一定是叶子节点 性质2:任意点的最长链端点一定是直径端点。 性质3:如果一棵树有多条直径,那么它们必然相交,且有极长连…

.NET MAUI开源架构_1.学习资源分享

最近需要开发Android的App,想预研下使用.NET开源架构.NET MAUI来开发App程序。因此网上搜索了下相关资料,现在把我查询的结果记录下,方便后面学习。 1.官方文档 1.1MAUI官方学习网站 .NET Multi-Platform App UI 文档 - .NET MAUI | Micro…

Python实战MySQL之数据库操作全流程详解

概要 MySQL是一种广泛使用的关系型数据库管理系统,Python可以通过多种方式与MySQL进行交互。本文将详细介绍如何使用Python操作MySQL数据库,包括安装必要的库、连接数据库、执行基本的CRUD(创建、读取、更新、删除)操作,并包含具体的示例代码,帮助全面掌握这一过程。 准…

CodeSouler:AI赋能,编程效率的革命性飞跃!

🔥 功能大揭秘,让你的代码飞起来!🔥 01 添加代码注释 📝 告别繁琐,一键添加精准注释!提升代码清晰度,让后续维护不再是难题。 02 生成单元测试 🧪 智能分析,自…

C1W4.LAB.Vector manipulation+Hash functions and multiplanes

理论课:C1W4.Machine Translation and Document Search 文章目录 Python 中的矢量操作Transforming vectorsExample 1Example 2 Frobenius Norm Hash functions and multiplanesBasic Hash tablesPlanesHash Function with multiple planesRandom PlanesDocument v…

苹果x怎么录屏?手把手教你操作

随着社交媒体和视频平台的兴起,人们越来越习惯于通过视频来分享生活点滴、传播信息。苹果X手机凭借其出色的性能和高清屏幕,成为了许多用户录制屏幕视频的首选设备。可苹果x怎么录屏呢?本文将详细介绍苹果x手机的内置录屏方法,通过…

Blender使用(二)点线面基本操作

Blender使用之点线面 1.编辑模式 tab键进行切换,为了方便菜单调出,可以设置键位映射为拖动时的饼菜单。 设置好后,按住tab键移动鼠标(注意不要点击鼠标),即可弹出编辑菜单。 默认是点模式,在左上角可进行点线面的切换…

【linux高级IO(三)】初识epoll

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Linux从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多操作系统知识   🔝🔝 Linux高级IO 1. 前言2. 初识e…

帕金森营养宝典,守护你的健康每一天!

👋 嗨,亲爱的小伙伴们!今天我们来聊聊一个有点“严肃”但超级重要的话题——帕金森患者应该补充哪些营养?🤔 💪 首先,我们要知道,帕金森是一种常见的神经系统疾病,它可能…

自制一个指定容量缓存,并实现最近使用的最后删除

需求 实现一个缓存key-value结构,并设定容量最大值,当put进去的时候,如果超过最大容量,则将最早放进去的删除当get的时候,返回key值,并将key放到后面(表示最近使用过,最后删除&…

mp3音乐剪辑软件大盘点,安利7款小白必备的免费mp3剪辑软件(详解)

mp3现在是最常见的音频格式,无处不在,包括下载音乐、播放播客、保存有声读物等等。因此,拥有一款强大的mp3音乐剪辑软件至关重要。使用mp3剪辑软件,你可以修剪、合并、压缩,甚至转换mp3为其他常见音频格式。所以&#…

openstack设置IP直接登录,不需要加dashboard后缀

openstack 实验环境,openstack-t版,centos2009 修改配置文件 [rootcontroller ~]# vim /WEBROOT /etc/openstack-dashboard/local_settings #将dashboard去掉 WEBROOT /dashboard/ #改为 WEBROOT /[rootcontroller ~]# vim /etc/httpd/conf.d/openst…

智能优化算法之禁忌搜索(Tabu Search, TS)

上图展示的是使用禁忌搜索算法解决电力系统孤岛问题。该问题旨在在发生严重扰动后将电力系统划分为几个不同的孤岛,目标是在将相关发电机放置在同一孤岛中并保持每个孤岛的连通性的同时,最小化所有孤岛的总发电负荷不平衡状态。 禁忌搜索(Ta…

ARM架构(一)—— ARMV8V9基础概念

目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…

C++(week11): C++基础 第六章:关联式容器 set、map

文章目录 第六章:关联式容器1.set(1)set的特点(2)set的构造(3)set的查找操作 (set访问元素)(4)set的插入操作、pair(5)set的遍历 2.map(1)map的特点(2)map的构造(3)map的查找操作(4)map的插入操作(5)map的下标操作 (重点)(5)map的遍历 第六章…

入度与出度在数据结构中的应用

文章目录 应用案例1. 邻接矩阵2. 邻接链表3. 邻接集(字典实现)4. 入度列表(基于邻接链表计算) 特别补充3. 邻接集计算入度(补充)4. 邻接多重表(概念介绍) 入度和出度是图论中的概念&…

手机误删图片怎么办?2个照片恢复大师来帮忙,轻松找回

手机照片早已成为我们日常生活中的一部分,记录着欢笑、泪水等各种瞬间。但有时候,因为各种原因,它们会突然消失,让人痛心疾首。照片恢复有哪些方法呢?别急,今天就给大家带来2位照片恢复大师,它们…