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 。 如果您打算在大型项目中进行同样的安排,那是您必须安排的最短时间。 我们仍在努力解决这种迁移带来的一些附带影响,但幸运的是,它们并不是那么…

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

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

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

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

JArchitect v2017发布!

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

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

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

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

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

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

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

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

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

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

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

管理任务执行-有效执行

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

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

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

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

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

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

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

贪心只能过样例 loj515

范围$100$ 题解 比较裸的式子 $f[i][j]$表示枚举到第$i$位有没有和为$j$方案 只有$0$或$1$ $f[i][j]f[i-1][j-val*val]$ 答案$\sum\limits f[n][i]$ 范围$1000000$$((1-100)^2 *100)$ 复杂度爆炸,可以滚动数组,得17分 考虑优化,$bitset$, $bitset$表示实际值是否可以凑出 $f[i]…

接口中定义的成员变量是( )。_抽象与接口

原文链接:抽象与接口抽象类抽象类的定义Java可以创建一种类专门用来当作父类,这种类称为“抽象类”。抽象类的作用有点类似“模板”,其目的是要设计者依据它的格式来修改并创建新的类。在Java中可以创建一种类专门用来当做父类,这…

配置phoenix连接hbase_Phoenix视图映射

点击关注上方“知了小巷”,设为“置顶或星标”,第一时间送达干货。Phoenix定位为OLTP和操作型分析(operational analytics),大多用于在线业务,稳定性要求第一位。Phoenix的功能很强大,也很灵活,Phoenix SQL…

python分析数据差异的方法_用Python的两种方法进行方差分析

在进行数据分析时,我们往往会遇到要对某个变量的影响因素进行分析的情况,而影响一事物的因素往往是很多的。比如在化工生产中,有温度、压力、剂量、反应时间等因素。每一因素的改变都有可能影响产品的数量和质量。我们往往要找出对产品质量有…

5 图片 渐变_AI教程!5分钟教你绘制超酷炫的字体效果

图一所示的图片就是我们今天要学的AI教程啦。为什么想起来要做这个呢?因为前两天有两个粉丝私信我问这种效果的字体怎么做。觉得大家应该对这类字体比较感兴趣的,所以今天就给大家出个教程啦。第一眼看上去是不是感觉很酷炫?其实步骤也不多&a…

6的变换_电源学报 | 2020年第3期:quot;高性能双向直流变换技术及其应用quot;专辑征稿启事...

往期精选:【电源学报•热点论文】贝尔福-蒙贝利亚技术大学(UTBM)高非教授-多物理域质子交换膜燃料电池建模仿真及实验测试专辑主编:张云 研究员(天津大学)吴红飞 教授(南京航空航天大学)专辑刊期: 2020年第3期(2020年5月)专辑介绍双向直流变换…