第 1 题
6 个元素以 6、5、4、3、2、1 的顺序进栈,下列不合法的出栈序列是( )。
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
[tag_link]
正确答案:C
栈是后进先出(LIFO)的数据结构,元素以固定顺序 6、5、4、3、2、1 依次进栈。
合法的出栈序列必须满足:在模拟进栈和出栈过程中,每次出栈的元素要么是栈顶元素,要么可以通过压入剩余进栈元素后成为栈顶元素。
对于选项 A(5、4、3、6、1、2):模拟过程可行,例如先压入 6、5,出栈 5; 压入 4,出栈 4; 压入 3,出栈 3; 出栈 6; 压入 2、1,出栈 1,出栈 2。 序列合法。
对于选项 B(4、5、3、1、2、6):模拟过程可行,例如压入 6、5、4,出栈 4; 出栈 5; 压入 3,出栈 3; 压入 2、1,出栈 1; 出栈 2; 出栈 6。 序列合法。
对于选项 C(3、4、6、5、2、1):模拟时,先压入 6、5、4、3,出栈 3; 出栈 4; 此时栈顶为 5,但下一个出栈元素是 6。 由于 6 在栈底,被 5 压住,必须先出栈 5 才能出栈 6,但序列中 6 在 5 之前,无法实现。 因此序列不合法。
对于选项 D(2、3、4、1、5、6):模拟过程可行,例如压入 6、5、4、3、2,出栈 2; 出栈 3; 出栈 4; 压入 1,出栈 1; 出栈 5; 出栈 6。 序列合法。
综上,不合法的出栈序列是选项 C。