C++中栈的出栈,入栈规则:A,B,C,D,E

考题:

     栈底至栈顶一次存放元素 ABCD 在第五个元素E入栈之前  栈中元素可以出栈,则出栈序列可能是_____a d___________.

     a.  ABCED

     b.  DBCEA

   c.  CDABE

   d.  DCBEA

分析:

1.假定进栈序列是从小到大排练的(即A<B<C<D<E),则出栈序列中不可能有  “大小中”这种序列,因为在“大数”出栈后,在栈中“中数”是在“小数”上面的,所以只能是先出“中数”再出“小数”
2.出栈序列中如包含下列序列则是错误的:CAB,DAB,DAC,EAB,EAC,EAD,EBC,EBD,包括在这些序列中间加入其它的数都是错误的序列,如CAdB,CAeB等情况(大 小 更大  中)。

对于a.答案:A入栈,马上出栈,B入栈,马上出栈,C入栈,马上出栈,D入栈,E入栈,E出栈,D出栈

对于d.答案:A入栈,B入栈,C入栈,D入栈,D出栈,C出栈,B出栈,E入栈,E出栈,A出栈

其他答案均不可能,违反了上述的"大" "小","中"原则

原文地址:https://www.cnblogs.com/ttss/p/4148750.html