
有六个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列?( )。
答案是346512栈是先进后出吧我不明白是怎么会是这个答案我们考试题上的标准答案正确的我就更不明白了没有一个正确答案是123456我觉得123456应该是正确的吧请教了我...
答案是346512 栈是先进后出吧 我不明白是怎么会是这个答案 我们考试题上的标准答案 正确的我就更不明白了 没有一个正确答案是123456 我觉得123456应该是正确的吧 请教了 我就因为这个题差3分得奖学金 不甘心
展开
3个回答
展开全部
C不是合法的。
选项:
A.5
4
3
6
1
2
B.4
5
3
1
2
6
C.3
4
6
5
2
1
D.2
3
4
1
5
6
解析:
此题考查堆栈“后进先出”的特点。对选项A来说,第一个出栈元素是5,因为6先于5进栈,所以必定在5之后出栈,其余的元素出栈顺序任意;
对选项B来说,第一个出栈元素是4,所以5和6两个元素必定在4之后依次出栈;对选项C来说,第一个出栈元素是3,则必有4、5、6三个元素依次在3后面出栈,但是选项C中的顺序是3、4、6、5,这是不符合要求的;
对选项D来说,第一个出栈元素是2,则必有3、4、5、6依次在2后面出栈,D也是符合要求的,因此答案选C。
总结:这种问题如何解决呢我们看第一个出栈元素,然后确定先于第一个元素进栈的所有其他元素,这些元素一定在第一个出栈元素之后顺序出栈。如果第一个元素仍然无法判断出来,可继续看后面的元素,依次类推。
举例如下:
假设第一个出栈的元素是1,则出栈顺序一定是6、5、4、3、2、1,没有其他情况。
假设第一个出栈的元素是2,则出栈顺序可能有:
213456;231456;234156;
234516;
234561
(可首先把23456写出,然后可将1插到2之后的任意位置)
假设第一个出栈的元素是3,则出栈顺序可能有:
3
12
456;34
12
56;
345
12
6;
3456
12
但是314526是不能的。
因为3出栈之后,当前栈中仍有4、5、6三个元素,如果下一个是1出栈,则肯定先让2进栈,再让1进栈,然后1出栈,此时栈顶就变成2了,则下一个出栈的只能是2,而不能是4。
选项:
A.5
4
3
6
1
2
B.4
5
3
1
2
6
C.3
4
6
5
2
1
D.2
3
4
1
5
6
解析:
此题考查堆栈“后进先出”的特点。对选项A来说,第一个出栈元素是5,因为6先于5进栈,所以必定在5之后出栈,其余的元素出栈顺序任意;
对选项B来说,第一个出栈元素是4,所以5和6两个元素必定在4之后依次出栈;对选项C来说,第一个出栈元素是3,则必有4、5、6三个元素依次在3后面出栈,但是选项C中的顺序是3、4、6、5,这是不符合要求的;
对选项D来说,第一个出栈元素是2,则必有3、4、5、6依次在2后面出栈,D也是符合要求的,因此答案选C。
总结:这种问题如何解决呢我们看第一个出栈元素,然后确定先于第一个元素进栈的所有其他元素,这些元素一定在第一个出栈元素之后顺序出栈。如果第一个元素仍然无法判断出来,可继续看后面的元素,依次类推。
举例如下:
假设第一个出栈的元素是1,则出栈顺序一定是6、5、4、3、2、1,没有其他情况。
假设第一个出栈的元素是2,则出栈顺序可能有:
213456;231456;234156;
234516;
234561
(可首先把23456写出,然后可将1插到2之后的任意位置)
假设第一个出栈的元素是3,则出栈顺序可能有:
3
12
456;34
12
56;
345
12
6;
3456
12
但是314526是不能的。
因为3出栈之后,当前栈中仍有4、5、6三个元素,如果下一个是1出栈,则肯定先让2进栈,再让1进栈,然后1出栈,此时栈顶就变成2了,则下一个出栈的只能是2,而不能是4。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询