1. 程式人生 > >棧輸入輸出規律總結

棧輸入輸出規律總結

      我們都知道棧是先進後出的,最近總遇見這樣的題型,原則是“先進後出”,但做題總漏掉

       現以四個為例:設鏈棧的輸入序列為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從小到大排列。