1

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

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

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

我相信答案是:

6 5 4 3 2 1 0 7 8 9

我对么?先感谢您!

4

1 回答 1

2

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

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();

第二个也可以使用序列:

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()给您。10

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

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

于 2014-10-06T06:07:44.507 回答