Python 根据入栈顺利判定出栈顺序

1.读取入栈,出栈数据;

2.把数据分别转化成整数列表;

3.新建栈列表,用入栈数据进行压栈;如果栈列表不为空,并且栈顶层数据为出栈的元素;删除栈列表的顶层数据;

4.如果栈列表不为空,说明栈列表里面的元素没有删除完;那么出栈就不成功;反之,成功;

 1 import sys
 2 while True:
 3     try:
 4         a = sys.stdin.readline().strip()  # 入栈
 5         b = sys.stdin.readline().strip()  # 出栈
 6         # 转化成列表
 7         a_lst = list(map(int,a.split(",")))
 8         b_lst = list(map(int,b.split(",")))
 9         # 入栈列表不为空且最后一个元素与出栈元素一样,那就删除它;
10         stack = []
11         j = 0             #出栈索引
12         for i in a_lst:
13             stack.append(i)
14             while stack and (stack[-1] == b_lst[j]):
15                 stack.pop()
16                 j += 1
17         if len(stack) == 0:
18             print("true")
19         else:
20             print("false")
21     except:
22         break

原文地址:https://www.cnblogs.com/breakcircle/p/12079335.html

时间: 2024-08-27 13:48:51

Python 根据入栈顺利判定出栈顺序的相关文章

判断出栈序列是否可能是某个入栈序列的出栈序列,C++

主要思想栈必须满足先进后出的规则,例如: 压入序列1,2,3,4,5 出栈序列4,3,5,1,2 设定一个Max值代表目前已经出栈的压入序列索引号最大的值 如当4出栈的时候,目前Max是4,当3出栈的时候,就查看3,4是否出栈,如果出栈就正确 当1出栈的时候,目前Max是5,就查看1~5时候出栈,这时候2还没有出栈就认为这个出栈序列不符合先进后出 #include<iostream>#include<map>#include<vector>#include<mem

栈的基本操作—出栈与入栈

#include<stdio.h> #include<stdlib.h> #define LENGTH 100 //初始分配栈的长度 #define ADD_LEN 10 //栈长增量 typedef struct {//构造栈的数据类型 int *base; int *top; int stacksize; }SqStack; void CreateStack(SqStack &S);//初始化一个栈 void PushStack(SqStack &S,int e

栈的基本操作 出栈与入栈

#include<stdio.h> #include<stdlib.h> #define LENGTH 100 //初始分配栈的长度 #define ADD_LEN 10 //栈长增量 typedef struct {//构造栈的数据类型 int *base; int *top; int stacksize; }SqStack; void CreateStack(SqStack &S);//初始化一个栈 void PushStack(SqStack &S,int e

栈的合理出栈顺序(列车厢调度)

列车厢调度 一道较为明显的栈的可能出栈顺序的变式题,2是栈,3是出栈序列,很水一道变式应用 1 ====== <--移动方向 / 3 ===== 2 ====== -->移动方向 大家或许在某些数据结构教材上见到过"列车厢调度问题"(当然没见过也不要紧).今天,我们就来实际操作一下列车厢的调度.对照上方的ASCII字符图,问题描述如下: 有三条平行的列车轨道(1.2.3)以及1-3和2-3两段连接轨道.现有一列车厢停在1号轨道上,请利用两条连接轨道以及3号轨道,将车厢按照要

安卓 碎片 如何实现类似 活动 栈的 进栈 出栈

韩梦飞沙  韩亚飞  [email protected]  yue31313  han_meng_fei_sha 碎片 的 事物管理器 内部维持了 一个双向链表结构, 可以记录每次添加的碎片和 替代的 碎片. 然后 后退的时候, 会自动 出栈. 碎片,可以容易实现 局部更新. 原来 是把多个布局 放到 活动里. 现在可以用 碎片替代. 只在需要的时候加载 碎片. 提高了性能. 碎片 可以适应不同的屏幕尺寸. 切换碎片 ,通过 添加, 隐藏,添加另一个碎片.再次切换时,隐藏当前碎片,显示另一个.

数据结构-顺序栈(进栈 出栈)

#include<stdio.h> #define MaxSize 10 typedef struct SqStack{ int data[MaxSize]; int top ; }SqStack; //初始化顺序栈 void initStack(SqStack &S){ S.top = -1; } //判断栈是否为空 /*栈理论上不存在为满的情况,取决于内存大小*/ int isEmpty(SqStack S){ if(S.top == -1){//top为1表示为空 return

Python模拟入栈出栈操作

目标: 1.编写菜单,提示用户操作选项(push,pop,view,quit) 2.规则:定义列表,先入栈,后出栈,后入栈,先出栈 1.模拟入栈.出栈操作 >>> list1 = [] >>> list1.append('a') >>> list1 ['a'] >>> list1.append('b') >>> list1 ['a', 'b'] >>> list1.pop() 'b' >>

栈的链式存储结构和入栈出栈操作

参考<大话数据结构>P98~99——栈的链式存储结构. 进栈: 出栈: 举个简单的例子: 代码和解释如下(VS2012测试通过): 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 typedef string status;//用书上推荐的status返回是否成功,C++中的模板类string比字符数组char[]更方便 6 7 //栈的结点 8 //包含data,和指向下一个结点

两栈共享空间的存储结构和入栈出栈操作

参考<大话数据结构>P95~96——两栈共享存储空间. 当两个栈的需求空间有相反关系时,也就是一个栈增长时,另一个栈在缩短,可以采用两栈共享空间结构.这是针对两个具有相同数据类型的栈的一个设计技巧. 举个简单的例子: 代码和解释如下(VS2012测试通过): 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 #define MAXSIZE 6 //本例中栈满共6个元素 6 typed