java 栈和队列实现迷宫代码_Python 实现数据结构中的的栈,队列

0c4d5bd5b650f32fcac5d5d9d661906a.png

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

栈可以用顺序表实现,也可以用链表实现,这里为了方便就用顺序表实现。

# -*- coding: utf-8 -*-class Stack(object):    """栈的实现类"""    def __init__(self):        self.__items = []    # push(item) 添加一个新的元素item到栈顶    def push(self, item):        self.__items.append(item)    # pop() 弹出栈顶元素    def pop(self):        return self.__items.pop()    # peek() 返回栈顶元素    def peek(self):        return self.__items[self.size() - 1]    # is_empty() 判断栈是否为空    def is_empty(self):        return self.__items == []    # size() 返回栈的元素个数    def size(self):        return len(self.__items)if __name__ == '__main__':    stack = Stack()    stack.push(2)    stack.push(3)    stack.push(4)    stack.push(5)    tmp = stack.pop()    print(tmp)    print(stack.peek())    print(stack.size())    print(stack.is_empty())

队列

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。

队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表

# -*- coding: utf-8 -*-class Queue(object):    """队列的实现"""    def __init__(self):        self.__items = []    # push(item) 往队列中添加一个item元素    def push(self, item):        self.__items.insert(0, item)    # pop() 从队列头部删除一个元素    def pop(self):        return self.__items.pop()    # is_empty() 判断一个队列是否为空    def is_empty(self):        return self.__items == []    # size() 返回队列的大小    def size(self):        return len(self.__items)if __name__ == '__main__':    queue = Queue()    queue.push(1)    queue.push(2)    queue.push(3)    queue.push(4)    print(queue.pop())    print(queue.pop())    print(queue.pop())    print(queue.size())    print(queue.is_empty())

双端队列

双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。

双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。

# -*- coding: utf-8 -*-class Deque(object):    """双端队列"""    def __init__(self):        self.__items = []    # add_front(item) 从队头加入一个item元素    def add_front(self, item):        self.__items.insert(0, item)    # add_rear(item) 从队尾加入一个item元素    def add_rear(self, item):        self.__items.append(item)    # remove_front() 从队头删除一个item元素    def remove_front(self):        return self.__items.pop(0)    # remove_rear() 从队尾删除一个item元素    def remove_rear(self):        return self.__items.pop()    # is_empty() 判断双端队列是否为空    def is_empty(self):        return self.__items == []    # size() 返回队列的大小    def size(self):        return len(self.__items)    def print_items(self):        print(self.__items)if __name__ == '__main__':    deque = Deque()    deque.add_front(1)    deque.add_front(3)    deque.add_front(5)    deque.print_items()    deque.add_rear(9)    deque.add_rear(8)    deque.add_rear(7)    deque.print_items()    print(deque.is_empty())    print(deque.remove_front())    print(deque.remove_rear())    deque.print_items()

原文链接:https://baagee.vip/index/article/id/102.html

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

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

相关文章

管理任务执行-如何排任务优先级

背景 工程师出生的管理者擅长做任务管理,凡是明确答应过的事情,一般会如数兑现。 研究的含义 研究模块核心管理规划把事情做对团队建设理顺做事的主体任务管理把事情做出来,产出实实在在的业绩和成果做事【任务管理】是非常重要的管理内容 对…

maven项目 ant_将大型项目从Ant迁移到Maven

maven项目 ant事实是我们处在艰难时期。 我们花了将近三个月的时间将构建机制从Ant迁移到Maven 。 如果您打算在大型项目中进行同样的安排,那是您必须安排的最短时间。 我们仍在努力解决这种迁移带来的一些附带影响,但幸运的是,它们并不是那么…

缩影和掠影_普查员的“酸苦甜” 社区人口普查工作掠影

普查员的“酸苦甜”--社区人口普查工作掠影/十年一度的人口普查即将收官自十月中旬开展摸底工作以来长安路三社区的普查员们伴着晨曦出发,伴着星光回家,走街串巷、爬楼入户。他们中有社区干部、有社区工作者、还有热心的志愿者们,大家都绷着一…

八数码深度优先搜索_深度优先搜索和广度优先搜索

深度优先搜索和广度优先搜索关于搜索&遍历对于搜索来说,我们绝大多数情况下处理的都是叫 “所谓的暴力搜索” ,或者是说比较简单朴素的搜索,也就是说你在搜索的时候没有任何所谓的智能的情况在里面考虑,很多情况下它做的一件事…

element 日期控件 限制开始日期和结束日期

基于element ui中的时间日期控件的开始日期和结束日期的限制用picker-options属性&#xff0c; 当前日期时间器特有的选项。 代码如下&#xff1a; <el-form-itemlabel"开始日期"label-width"90px"prop"startDate"><el-date-pickerv-mo…

JArchitect v2017发布!

我们很高兴地通知您&#xff0c; JArchitect v2017已发布 &#xff0c;现在可以下载 &#xff01; JArchitect是一个分析工具&#xff0c;确实可以让您深入研究代码的结构和质量 。 使用JArchitect&#xff0c;可以使用 代码指标 &#xff0c;使用可视化 图和树图 &#…

[C语言]程序练习(一)

你好&#xff0c;这里是争做图书馆扫地僧的小白。 个人主页&#xff1a;争做图书馆扫地僧的小白_-CSDN博客 目标&#xff1a;希望通过学习技术&#xff0c;期待着改变世界。 目录 前言 一、常量练习 &#xff08;一&#xff09;整型常量 &#xff08;二&#xff09;浮点型常…

如何在程序中不用加号实现加法_程序员那些事 | JavaScript基础(六)

Hello&#xff0c;程序员那些事又与大家见面了&#xff01;JS简易日历先给大家看一下效果&#xff1a;大家可能会觉得&#xff0c;唉~好像跟上节课讲的选项卡差不多&#xff0c;就是十二个按钮&#xff0c;改变this的class&#xff0c;同时下面放十二个div&#xff0c;每次显示…

用友UI层获取机构的方法

U层&#xff1a; UFIDA.U9.UI.PDHelper.PDContext.Current.OrgIDPDContext.Current.OrgRef.CodeColumn 转载于:https://www.cnblogs.com/Xanthus/p/11556836.html

求立方根_「每日一学」数学七上:立方根的知识要点

哈喽&#xff0c;大家好&#xff01;我们又见面了&#xff0c;欢迎继续关注【轩爸辅导】的【口袋数学】。日更【每日一学】【每日一练】&#xff0c;帮助孩子日积月累&#xff0c;考出好的成绩。配套辅导&#xff0c;哪里不会学哪里&#xff0c;哪里出错练哪里&#xff0c;帮助…

python声明编码格式_使用python将doc文件转为utf8编码格式的txt

最近花了点时间看了会doc的转换&#xff0c;果然官方文档最好用&#xff0c;代码如下&#xff1a; import os import sys import fnmatch import win32com.client PATH os.path.abspath(os.path.dirname(sys.argv[0])) doc_path PATH ‘/data/doc/’ txt_path PATH ‘/dat…

49反思

感谢自闭场 转载于:https://www.cnblogs.com/znsbc-13/p/11565800.html

mongodb适用于_适用于MongoDB和Mongometer的SpiderMonkey至V8

mongodb适用于通过10gen将MongoDB 2.3 / 2.4的默认JavaScript引擎从SpiderMonkey切换到V8&#xff0c;我想我将借此机会使用mongometer比较这些发行版的相对性能。 作为安全专家&#xff0c;我真的应该首先研究“ 其他身份验证功能” ……嘿。 我将记录比较过程中所采取的步骤…

地面指示标志_详解消防应急照明和疏散指示系统的施工及安装方法消防施工

详解消防应急照明和疏散指示系统的施工及安装方法消防施工消防应急照明与疏散指示系统在生活中随处可见&#xff0c;相信您并不陌生&#xff0c;它是为人员疏散、消防作业提供照明和疏散指示的系统&#xff0c;由各类消防应急灯具及相关装置组成。自今年3月1日国家标准GB 51309…

python获取某文件路径_Python获取当前文件路径

一. Python 获取当前文件路径方法 2. sys.path[0] 获取文件当前工作目录路径&#xff08;绝对路径&#xff09; sys.argv[0]|获得模块所在的路径&#xff08;由系统决定是否是全名&#xff09; 若显示调用python指令&#xff0c;如python demo.py&#xff0c;会得到绝对路径; 若…

Java认证值得吗?

在任何行业中获得证书总是有其利弊&#xff0c;但似乎在技术世界中&#xff0c;情况更加动荡。 对熟练的技术人员的需求如此&#xff0c;进入该行业的途径很多&#xff0c;包括学术认证方法和更自学的基于投资组合的方法。 但是Java认证是否值得追求以促进您的职业发展&#xf…

管理任务执行-有效执行

背景 给任务排优先级是解决做什么的问题。有效执行解决的是怎么做的问题。 项目执行的要点。 清晰的目标 现象 1.明确项目的初衷&#xff0c;但是没有设定可以衡量的目标。 2.在你的眼中目标很清晰&#xff0c;但是负责项目实施的员工并不知道从哪下手去执行&#xff1b; 3.两周…

什么是实验室人员比对人员_CNAS实验室认可对人员、设备的要求

一、人员要求1、从事实验室活动的人员不得在其他同类型实验室从事同类的实验室活动。 2、从事检测或校准活动的人员应具备相关专业大专以上学历。如果学历或专业不满足要求&#xff0c;应有 10 年以上相关检测或校准经历。关键技术人员&#xff0c;如进行检测或校准结果复核、检…

anaconda base环境_如何在最新版的Anaconda下安装Tensorflow 1.9

去年10月Tensorflow刚刚开放了2.0&#xff0c;当然用2.0慢慢地会变成未来使用Tensorflow的趋势。但是&#xff0c;关于如何用2.0进行机器学习和深度学习研究的书籍市面上能买到的大多都还是英文原版&#xff0c;且很少&#xff0c;因为太新中文的参考书更是少的可怜。因此&…

降级安装_如何升级iOS13测试版,还有降级

我是果子&#xff0c;前几天苹果发布了iOS13第二个开发者预览版&#xff0c;并且放出了描述文件&#xff0c;可以直接在手机上通过安装描述文件OTA升级。升级iOS13预览版不过我发现还有很多小伙伴不会通过安装描述文件进行升级&#xff0c;所以今天我们再写个教程给还不知道的小…