c++ OCCT (Open CASCADE Technology)
2026/7/7 8:54:55
令序列 X、Y、Z 的每个元素都按顺序进栈,且每个元素进栈和出栈仅一次。则不可能得到的出栈序列是 ( )。 A.X Y Z B. X Z Y C. Z X Y D. Y Z X
栈的核心规则是 “先进入的元素后出栈”,题目中进栈顺序固定为X→Y→Z(元素按顺序进栈,中间可穿插出栈操作,但进栈先后顺序不可颠倒)。解题关键是逐一模拟每个选项的进出栈过程,判断是否符合规则。
模拟过程:X 进栈 → X 出栈 → Y 进栈 → Y 出栈 → Z 进栈 → Z 出栈完全符合先进后出,可行。
模拟过程:X 进栈 → X 出栈 → Y 进栈 → Z 进栈 → Z 出栈 → Y 出栈Y 先于 Z 进栈,Z 先出栈(符合 LIFO),再 Y 出栈,可行。
要让 Z 第一个出栈,必须先将 X、Y、Z 全部进栈(因为 Z 是最后进栈的,需先完成 X→Y→Z 连续进栈,才能让 Z 成为栈顶并出栈):第一步:X 进栈 → Y 进栈 → Z 进栈 → Z 出栈(此时栈内剩余 Y(栈顶)、X(栈底));第二步:要出 X,必须先出栈顶的 Y(栈的 LIFO 特性),无法直接跳过 Y 出 X;无论调整进出栈顺序(如 X 进→X 出→Y 进→Z 进→Z 出,此时栈内仅 Y,无法出 X),均无法得到 “Z X Y”,不可行。
模拟过程:X 进栈 → Y 进栈 → Y 出栈 → Z 进栈 → Z 出栈 → X 出栈Y 先于 Z 进栈,Z 先出栈,最后 X 出栈,符合 LIFO,可行。
只有选项 C 无法通过合法的进出栈操作实现。
C