栈输入输出规律总结

      我们都知道栈是先进后出的,最近总遇见这样的题型,原则是“先进后出”,但做题总漏掉

       现以四个为例:设链栈的输入序列为A B C D,试写出所得到的所有可能的输出序列。

      解:从A先出栈开始考虑所有情况,然后在A出的接触上接着考虑B出的情况,直到最后;然后考虑B先出的情况,在B先出的基础上剩余的按小到大的顺序考虑。

       (一)A先出

                (1)A先出基础上B出有:ABCD、ABDC

                (2)A先出基础上C出有:ACBD、ACDB、ADCB

                (3)A先出基础上D出有:ADCB

        同理有B先出:BACD、BADC、BCAD、BCDA、BDCA

               有C先出:CBAD、CBDA、CDBA

               有D先出:DCBA


      检查正误的规律:先出来的序号后面一定不能有比他本身小的从小到大排列的序列。

      例:在此题中ADBC不是解 ,如图:

             

同样的:

      BDAC不是解,因为AC都小于D,且AC是从小到大排列;

      CABD不是解,因为AB都小于C,且AB是从小到大排列;

      CADB不是解,因为AB都小于C,且AB是从小到大排列,(尽管他们中间隔着D;)

      CDAB不是解,因为AB都小于C,且AB是从小到大排列;

      DABC不是解,因为ABC都小于D,且ABC从小到大排列;

      DACB不是解,因为ACB都小于D,且AB从小到大排列;

      DBAC不是解,因为BAC都小于D,且AC从小到大排列;

      DBCA不是解,因为BCA都小于D,且BC从小到大排列;

      DCAB不是解,因为CAB都小于D,且AB从小到大排列。

      

你可能感兴趣的:(*【理论奠基】,———,自考)