进栈顺序为abcd则出栈顺序为_进栈顺序为a、b、c、d,则出栈顺序可以为?
@依风152:
这个是CSDN上的,你看看 13楼 18,19楼 这个你应该能看明白! 我两年多没看数据结构了╮(╯▽╰)╭
先说两条数学结论:
设入栈序列为I(n):1,2,...,n
1,I(n)有C(2n,n)-C(2n,n-1)个出栈序列。
2,L(n)是I(n)的一个出栈序列当且仅当:对于L(n)的任意一位数M,其后面比它小的数降序排列。
注:[1],结论1是数《数据结构》课本上的原话,所以不会有错,另外根据卡塔兰数的几何意义,也容易证明。
[2],结论2是我自己观察的,自认为应该是对的。举个例子如下:
判断序列L(6):4,3,5,2,1,6是否为I(6)的出栈序列。
解:4后面比4小的数3,2,1是降序列;3后面比3小的数2,1是降序排列;5后面比5小的数2,1是降序排列;2后面比2小的数φ是降序排列;1后面比1小的数φ降序排列;6后面比6小的数φ是降序排列。所以L(6)是I(6)的一个出栈序列。
--
接下来就是程序:
1,判定函数bool ju(L):输入序列L判断其是否为I的出栈序列。用结论2的思路即可,可以优化。
2,过程复原函数Ls proc(L):输入I的出栈序列L,输出完整的出入栈过程,如果输入的L不是I的出栈序列,给出提示,因此proc也具有判定功能。
3,列举I(n)的所有出栈序列
进栈顺序为abcd则出栈顺序为_进栈顺序为a、b、c、d,则出栈顺序可以为?相关推荐
- 进栈顺序为abcd则出栈顺序为_线性表之顺序表示
线性表 1. 线性表的基础知识 1.1 线性表的定义 线性表是具有相同数据类型的n(n>0)个数据元素的有限序列. 若用L命名,表示:L=(a1,a2,a3,-,ai-1,ai,ai+1,-,a ...
- 简单实现顺序表示的栈与队列的进栈出栈创空栈入队出队创空队等算法
栈和队列是两种最重要的数据结构,也是两种最典型的抽象数据类型,应用非常的广泛. 目录 一.栈 一.空栈的创建 二.进栈 三.出栈 二.队列 一.创建空队列 二.队列的入队和出队 三.取队列头元素 一. ...
- C++顺序栈的实现(进栈,出栈,判断栈空,打印输出,获取栈顶元素)
#include <iostream> using namespace std; typedef int ElemType; //栈的结构类型 #define MaxSize 50//定义 ...
- 假设有搅乱顺序的一群儿童成一个队列_数据结构与算法系列之栈amp;队列(GO)...
以下完整代码均可从这里获取 栈 栈的基本概念 「后进先出.先进后出就是典型的栈结构」.栈可以理解成一种受了限制的线性表,插入和删除都只能从一端进行 当某个数据集合只涉及在一端插入和删除数据,并且满足后 ...
- C语言试题十五之编写函数void function(int x,int pp[],int *n),求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回
1. 题目 请编写函数void function(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形 ...
- 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序(约瑟夫环问题)
用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出.写出C程序 // 用户输入M,N值,从1至N开始顺序 // 循环数数,每数到M输出该数值, // 直至全部输出 #incl ...
- (链表解决)13个人围成一圈,从第一个人开始顺序报号1,2,3,凡报到3的人,退出圈子,找出最后留在圈子里的人的序号。
题目 13个人围成一圈,从第一个人开始顺序报号1,2,3,凡报到3的人,退出圈子.找出最后留在圈子里的人的序号. 代码 #include <stdio.h> #define n 13 ty ...
- 链表list(链式存储结构实现)_数据结构知否知否系列之 — 线性表的顺序与链式存储篇(8000 多字长文)...
从不浪费时间的人,没有工夫抱怨时间不够. -- 杰弗逊 线性表是由 n 个数据元素组成的有限序列,也是最基本.最简单.最常用的一种数据结构. 作者简介:五月君,Nodejs Developer,热爱技 ...
- python高级编程 豆瓣_《Python高级编程》读书笔记:方法解释顺序浅析
Python在2.2引入了New-style object(ref),而且在2.3引入了新的方法解释顺序(Method resolution order,以下简称MRO),新的MRO解决了多继承下的方 ...
最新文章
- vrish 删除虚机_使用Kvm命令集管理虚拟机
- 【JavaScript】修改图片src属性切换图片
- 开启POP3/SMTP服务
- 谷歌浏览器手势_分享一些日常手势[狗头]
- pytorch —— 池化、线性、激活函数层
- HTML中光移动边框,CSS 边框各边
- java来构造邻接矩阵
- 用python画机器猫代码_如何用Python画一只机器猫?| 原力计划
- Segment Descriptors, Code- and Data-Segment Descriptor Types
- python脚本第一行_python脚本第一行如何写
- 简历是这样选出来的!
- 基于MAX2671设计的400Mhz混频器
- SAD SATD的区别及应用
- Personalized Cup
- 训练fater rcnn时出现path not exist问题
- typename的起源与用法
- 区块链学习(6)-EVM有6种方式可以存储数据
- 解决idea打不开的两种可能性
- D35 Spark源代码(待补充)
- 如何监控Redis性能指标(译)
热门文章
- UE3 移动设备分析
- Oracle查询表结果添加到另一张表中
- 联影uEXPLORER全身扫描仪获FDA批准,2019年初将在美国上市...
- MongoDB的导入与导出
- 存储过程+调用存储过程+无/带参的存储过程+in参数+out参数+int out参数+为参数设置默认值...
- 零件销售系统的质量属性
- 避开使用XAML的性能陷阱
- DataGrid实现简单的行分组
- lisp删除块中图元_DeleteBlocks
- Python机器学习:PCA与梯度上升03求数据的主成分PCA