首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

合法的出栈序列

poj 1363 Rails 已知从1至n的数字序列,按顺序入栈,每个数字入栈后即可出栈,也可在栈中 停留,等待后面的数字入栈出栈后,该数字再出栈,求该数字序列的某出栈 序列是否合法?...算法设计:使用栈与队列模拟入栈、出栈过程 同时使用一个队列与一个栈来解决该问题,设队列order与栈为S。队列order存储待判断是否合法 的出栈序列,使用栈S用来模拟出栈与入栈的过程。...3.如果相同则同时弹出栈顶元素与队列头部元素,直到栈空或栈顶与队列头部元素不同。 若最终栈为空,则说明序列合法,否则不合法。...int n = order.size();//n为序列长度,将1-n按顺序入栈 for(int i = 1; 1<= n;i++){ s.push(i);//将i入栈...s.empty()){ return false;//如果最终栈不空,则说明序列不合法! } return true; }

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ​一个栈的入栈序列为ABCDEF,则不可能的出栈序列是?

    今日分享一道关于栈的经典题目,笔者在秋招过程中考过两次。...题目: 一个栈的入栈序列为ABCDEF,则不可能的出栈序列是(D) A、DEFCBA B、DCEFBA C、FEDCBA D、FECDBA E、ABCDEF F、ADCBFE 分析: 该题主要是考虑栈的核心思想是先进后出...,并且需要注意入栈和出栈的顺序是未知的,例如你可以先入栈ABCD,然后出栈D,然后入栈E,出栈E,入栈F,出栈F,然后CBA依次出栈,也就是A选项的情况。...这里有一规律可记: 任何出栈的元素后面出栈的元素必须满足以下三点: 1、在原序列中相对位置比它小的,必须是逆序; 2、在原序列中相对位置比它大的,顺序没有要求; 3、以上两点可以间插进行。...我们再看选项D的出栈顺序FECDBA,明显出栈元素F后面的元素C和D不满足上面规律1,所以选项D是错误的,其它答案都是满足的。

    1.6K20

    C语言共享栈

    栈的操作我相信大家都应该了解了弄懂了, 如果没弄懂希望可以去再去看看相关的资料,我博客中的C语言中缀表达式转后缀表达式中涉及到了一下栈的基本操作,有兴趣的朋友也可以看看。...如若入栈成功则返回0;入栈失败则返回-1; 出栈时,先确定栈号是否合法,然后查看是对0#栈还是1#栈进行操作,出栈操作和顺序栈的出栈操作并无太大不同。 选定之后进行出栈操作。...如果出栈成功返回0;出栈失败返回-1; 添加适当的头文件,定义一个栈数据结构, 共享栈也是栈,只不过有点特殊,在这里我们还是需要添加适当的头文件和定义恰当的数据结构 #include<stdio.h...{ case 0:s->data[++s->top[0]] = x; break; case 1:s->data[--s->top[1]] = x; break; } return 0; } 出栈操作...出栈和入栈一样,也需要选择出栈的具体是哪个栈 int Pop(SqStack *s, ElemType* x, int n) { if (n 1) { printf("The

    1.2K30

    c语言-转义序列

    若要显示换行符,单引号或某些其他字符在字符串末尾,必须使用转义序列。 转义序列被视为单个字符,因此,它是有效的字符常数。 转义序列通常用于指定动作,例如在终端和打印机的回车和选项卡移动。 ...下表列出了 ANSI 转义序列以及它们所表示的内容。 请注意反斜杠(\?)前面的问号指定文本问号,在字符序列将被错误解释为三字符组的情况下。 有关更多信息,请参见三角符组。...转义序列 转义序列 表示 \a 提醒/(警报) \b Backspace \f 换页 \n 换行 \r 回车 \t 水平制表符 \v 垂直制表符 \' 单引号 \ " 双引号 \\ 反斜杠 \?...例如, \c 被视为 c。 结束 Microsoft 专用 转义序列可以发送 nongraphic 控制字符到显示设备。 ...一些转义序列特定于设备。 例如,垂直选项卡和换页符转义序列(\v 和 \f)不会影响屏幕输出,但它们会执行适当的打印机操作。 还可以将反斜杠(\)用作继续符。

    1.9K40

    c语言实现栈(顺序栈,链栈)

    个人主页: :✨✨✨初阶牛✨✨✨ 推荐专栏: C语言进阶 个人信条: 知行合一 本篇简介:>:讲解用c语言实现:“数据结构之"栈”,分别从"顺序栈"和"链栈"的接口讲解....栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。...出数据也在栈顶 "栈"的常见接口实现 InitST:初始化栈 STPush:入栈 STPop:出栈 STEmpty:判空(判断是否为空栈) PrintSTTop:打印栈顶元素 STTop:返回栈顶元素...next指针指向原"栈"的顶点 *pps = newnode;//更新栈顶 } 2.3 “出栈”,删除"栈"中的数据 步骤:(与链表的头删操作类似) 判空,防止空链栈的删除操作 记录原栈顶元素的地址....(ST* ps);//返回栈顶元素 void STDestory(ST* ps);//栈的销毁 接口实现区( stack.c) #include "stack.h" //初始化栈 void InitST

    30920

    C语言栈的实现

    因为方便:试想一下我们要判断栈是否空就只需要判断top是否等于buttom,如果buttom指向栈底显然就会麻烦许多 下面我们先用C语言来实现一下: 首先我们需要对这个装东西的“盒子”定义,而这个盒子就是栈...出栈一般有两种:1.让指定数据出栈2.让top指向的数据出栈,注意,如果要让指定的数据出栈,而且如果那个数据在中间,那你就不得不把从top到那个数据的全部节点出栈,因为栈是后进先出,而且只允许一段入/...出,这里我们讨论把top指向的节点出栈 这个非常简单,你可能会马上想到 sk->top=sk->top->next; 但是如果再想一下,你虽然完成了出栈,但是出了栈的那个节点怎么办?...*n=sk->top; sk->top=n->next; delete n; } 就像上面,另还要注意出栈需要考虑栈是否为空,我没有写 至此,一个C语言版本的栈及其主要操作就完成了,这也是我第一次写栈结构...,因为我用C++ stack sk; sk.push(5); //..

    3.9K40

    洛谷 || 栈(C语言)

    题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。 栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈)。...题目描述 宁宁考虑的是这样一个问题:一个操作数序列1,2,…,n(图示为 1 到 3 的情况),栈 A 的深度大于n。...现在可以进行两种操作, 将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的 push 操作) 将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的 pop 操作) 使用这两种操作,由一个操作数序列就可以得到一系列的输出序列...,下图所示为由 1 2 3 生成序列 2 3 1 的过程。...(原始状态如上图所示) 你的程序将对给定的 n,计算并输出由操作数序列 1,2,…,n 经过操作可能得到的输出序列的总数。 输入格式 输入文件只含一个整数 n(1≤n≤18)。

    1.3K30

    栈(用C语言实现)

    栈 1.1 概念与结构 栈:⼀种特殊的线性表,其只允许在固定的⼀端进行插入和删除元素操作。进行数据插入和删除操作的⼀端称为栈顶,另⼀端称为栈底。...栈中的数据元素遵守后进先出 LIFO(Last In First Out)的原则。 压栈:栈的插⼊操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据也在栈顶。...* ps, STDataType x); //出栈 void STPop(ST* ps); //取栈顶元素 STDataType STTop(ST* ps); //获取栈中有效元素个数 int...STSize(ST* ps); //栈是否为空 bool STEmpty(ST* ps); 实现栈的文件:Stack.c #include"Stack.h" void STInit(ST...arr[ps->top - 1]; } int STSize(ST* ps) {     assert(ps);     return ps->top; } 测试文件:text.c

    10110

    C语言实现顺序栈

    文章目录 顺序栈的常规操作 定义顺序栈结构体 初始化顺序栈 顺序栈判满 顺序栈判空 计算顺序栈的长度 顺序栈入栈(Push) 顺序栈出栈(Pop) 顺序栈各操作测试 源代码 ?...-- ,后让栈顶元素出栈 s -> top--; return s -> datas[s -> top]; 栈顶指针top,指向的是元素的当前位置(初始 top = -1)。...入栈(Push),,先把 栈顶指针top 后移 ++ ,后让元素放入栈中 s -> top++; s -> datas[s -> top] = data; 出栈(Pop),先取出栈顶元素,后让 栈顶指针...top] = data; s -> top ++; return TRUE; } 顺序栈出栈(Pop) /* * 出栈 弹栈 * s 顺序栈 */ ElemType Pop(Stack s){...源代码 源代码已上传到 GitHub Data-Structure-of-C,欢迎大家下载 C语言实现数据结构

    5.4K20
    领券