首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LIFO堆栈上的序列

LIFO堆栈上的序列
EN

Stack Overflow用户
提问于 2014-10-06 05:32:52
回答 1查看 1.2K关注 0票数 1

我正在为期中考试做准备,我需要帮助解决这个问题:

假设在LIFO堆栈上执行推送和pop操作的混合序列。按顺序推送数字0到9;弹出输出返回值。以下哪个输出序列可以发生?选择所有可能的。

代码语言:javascript
复制
1 2 5 4 3 6 0 9 8 7

6 5 4 3 2 1 0 7 8 9

4 6 8 7 5 3 2 9 0 1

0 1 5 6 4 3 7 9 2 8

0 2 4 1 6 7 5 9 8 3

我相信答案是:

代码语言:javascript
复制
6 5 4 3 2 1 0 7 8 9

我说的对吗?提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-06 06:07:44

第一种是可能的,顺序是:

代码语言:javascript
复制
push(0);
push(1);
pop();
push(2);
pop();
push(3);
push(4);
push(5);
pop();
pop();
pop();
push(6);
pop();
pop();
push(7);
push(8);
push(9);
pop();
pop();
pop();

第二种方法也可以通过顺序进行:

代码语言:javascript
复制
push(0);
push(1);
push(2);
push(3);
push(4);
push(5);
push(6);
pop();
pop();
pop();
pop();
pop();
pop();
pop();
push(7);
pop();
push(8);
pop();
push(9);
pop();

第三种方法是不可能的,因为在打印之后,9堆栈将包含0 1,而pop()将为您提供1而不是0

另外,第四种也是不可能的,因为打印后9堆栈将有2 8,而您不能在8之前pop() 2

第五种情况也是不可能的,因为打印之后,4个堆栈将包含1 33将首先弹出。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26210484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档