python判断出栈顺序是否合法_合适出栈序列

题目: 

有一个含1~n的n个整数序列a,通过一个栈可以产生多种出栈序列,设计一个算法采用链栈判断序列b(为1~n的某个排列)是否为一个合适的出栈序列,并用相关数据进行测试。

解释: 

①栈空,a[O]进栈(i=1);6[0]≠栈顶元素,a[1]进栈(i=2);b[0]≠栈顶元素,a[2]
进栈(i=3),如图3.13(a)所示。

②b[0]=栈顶元素,出栈一次,j增1(j=1);6[1]=栈顶元素,出栈一次,j增1(j=2);
b[2]=栈顶元素,出栈一次,j增1(j=3),如图3.13(b)所示。
③栈空,a[3]进栈(i=1);b[3]≠栈顶元素,a[3]进栈(i=4);6[3]≠栈顶元素,a[4]
进栈(i=5,a序列遍历完毕),如图3.13(c)所示。
④ b[3]=栈顶元素,出栈一次,j增1(j=4);6[4]=栈顶元素,出栈一次,j增1(j=5),
如图3.13(d)所示。
此时a序列遍历完毕,栈空返回True,表示6序列是a序列的出栈序列。
又例如,a=[1,2,3],6=[3,1,2],i=0,j=0,判断过程如下:
① 栈空,a[O]进栈(i=1);b[O]≠栈顶元素,a[1]进栈(i=2);6[O]≠栈顶元素,a[2]
进栈(i=3,a序列遍历完毕),如图3.14(a)所示。
② 6[O]=栈顶元素,出栈一次,j增1(j=1);6[1]≠栈顶元素,如图3.14(b)所示。

代码:

# 判断出栈顺序是否合法
def is_Serial(a,b,n):       #a,b为栈,n为个数st=LinkStack()             #创建一个栈空间i,j=0,0while i<n:st.push(a[i])i+=1while not st.is_empty() and st.gettop()==b[j]:      #相同就弹出,有时该while循环循环多次st.pop()j+=1return st.is_empty()        #按循序抵消直到栈空,若有未消掉的元素,则顺序不合法
a=[1,2,3,4]
b=[1,3,2,4]
c=[4,2,3,1]
print(is_Serial(a,b,4))
print(is_Serial(a,c,4))

 

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

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

相关文章

深度学习框架TensorFlow.NET之数据类型及张量2(C#)

环境搭建参考&#xff1a; 深度学习框架TensorFlow.NET环境搭建1&#xff08;C#&#xff09;-CSDN博客 由于本文作者水平有限&#xff0c;如有写得不对的地方&#xff0c;往指出 声明变量&#xff1a;tf.Variable 声明常量&#xff1a;tf.constant 下面通过代码的方式进行学…

1.UML面向对象类图和关系

文章目录 4种静态结构图类图类的表示类与类之间的关系依赖关系(Dependency)关联关系(Association)聚合(Aggregation)组合(Composition)实现(Realization)继承/泛化(Inheritance/Generalization)常用的UML工具reference欢迎访问个人网络日志🌹🌹知行空间🌹🌹 4种静态结构…

MySQL索引优化与查询优化

1. 索引失效案例 MySQL中提高性能的一个最有效的方式是对数据表设计合理的索引。索引提供了访问高效数据的方法&#xff0c;并且加快查询的速度&#xff0c;因此索引对查询的速度有着至关重要的影响。 使用索引可以快速地定位表中的某条记录&#xff0c;从而提高数据库查询的速…

mybatis在springboot当中的使用

1.当使用Mybatis实现数据访问时&#xff0c;主要&#xff1a; - 编写数据访问的抽象方法 - 配置抽象方法对应的SQL语句 关于抽象方法&#xff1a; - 必须定义在某个接口中&#xff0c;这样的接口通常使用Mapper作为名称的后缀&#xff0c;例如AdminMapper - Mybatis框架底…

Swift语言配合HTTP写的一个爬虫程序

下段代码使用Embassy库编写一个Swift爬虫程序来爬取jshk的内容。我会使用proxy_host为duoip&#xff0c;proxy_port为8000的爬虫IP服务器。 使用Embassy库编写一个Swift爬虫程序可以实现从网页上抓取数据的功能。下面是一个简单的步骤&#xff1a; 1、首先&#xff0c;需要在X…

RabbitMQ 消息应答与发布

目录 一、消息应答 1、自动应答&#xff08;默认&#xff09; 2、手动消息应答的方法 ​编辑 3、消息重新入队 4、手动应答案列与效果演示 二、RabbitMQ持久化 1、队列持久化 2、消息持久化 三、不公平分发&#xff08;能者多劳&#xff0c;弱者少劳&#xff09; 1、…

PHP语言、B/S手术麻醉临床信息管理系统源码

手术麻醉临床信息管理系统有着完善的临床业务功能&#xff0c;能够涵盖整个围术期的工作&#xff0c;能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施&#xff0c;能够规范麻醉科的工作流程&#xff0c;实现麻醉手术过程的信息数字化&#xff0c;自动生…

Blender vs 3ds Max:谁才是3D软件的未来

在不断发展的3D建模和动画领域&#xff0c;两大软件巨头Blender和3ds Max一直在争夺顶级地位。 随着技术的进步和用户需求的演变&#xff0c;一个重要问题逐渐浮出水面&#xff1a;Blender是否最终会取代3ds Max&#xff1f;本文将深入探讨二者各自的优势和劣势、当前状况&…

Flink SQL时间属性和窗口介绍

&#xff08;1&#xff09;概述 时间属性&#xff08;time attributes&#xff09;&#xff0c;其实就是每个表模式结构&#xff08;schema&#xff09;的一部分。它可以在创建表的 DDL 里直接定义为一个字段&#xff0c;也可以在 DataStream 转换成表时定义。 一旦定义了时间…

数票通批量开票小妙招,双11开票不用愁

每年双十一都是电商企业和财务“疯狂”的日子&#xff0c;随着疫情的回暖&#xff0c;消费者的消费能力蹭蹭上涨&#xff0c;商家的口袋盆满钵满&#xff0c;而财务的加班永无休止&#xff0c;批量开票成为财务人摆脱双十一加班的必备技能。 面对双十一狂欢&#xff0c;相信不少…

高校双十一快递爆仓警告,做快递代取能不能赚钱

今年双11期间的快递数量预计将超过往年。今年以来&#xff0c;快递行业竞争日益激烈&#xff0c;特别是价格战的竞争更是白热化。电商平台也针对低价展开了一系列促销活动&#xff0c;这种策略有望刺激快递单量增长。低价吸引力激发了用户的购物欲望&#xff0c;将导致高校快递…

【数据结构】树与二叉树(二):树的表示C语言:树形表示法、嵌套集合表示法、嵌套括号表示法 、凹入表示法

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语5.1.4 树的表示1&#xff0e;树形表示法2&#xff0e;嵌套集合表示法结构体创建树主函数 3&#xff0e;嵌套括号表示法结构体创建树嵌套括号表示法主函数 4&#xff0e;凹入表示法结构体创建树凹入表示法…