入棧和出棧問題

2021-08-30 17:05:47 字數 346 閱讀 4764

首先要知道對n個元素入棧,其出棧順序共有多少種情況?這個結果是(2n)!/(n+1)n!n!,即如果有3個元素,那麼出棧的順序共有5中情況。

a b c 的順序入棧,那麼出棧情況如下:

1> abc 2> bac 3>bca 4>cba 5>acb

出棧問題歸根到底為:先入後出原則。

如果第乙個出棧的為a,那麼bc還沒有入棧,所以後面的出棧順序可以是bc或者cb,其中bc表示b先入棧,而後出棧,c再入棧,最後出棧,其中b置頂。而cb則是bc入棧,而後先入後出的順序出棧。

不可能的情況是cab ,如果第乙個出棧的是c,則表示ab已經入棧,而且是a先入b後入棧,根據先入後出原則,一定是ba,而不是ab。

出棧入棧順序問題

不定項選擇題 依次讀入資料元素序列入棧,每進乙個元素,機器可要求下乙個元素入棧或彈棧,如此進行,則棧空時彈出的元素構成的序列是以下 序列?牛客444334號 ada 可行步驟 a入棧,b入棧,c入棧,d入棧,d出棧,e入棧,e出棧,c出棧,f入棧,f出棧,b出棧,g入棧,g出棧,a出棧 b 不可行,...

入棧出棧的順序問題

題意 某個字母序列,把這字母序列按順序壓入棧中,在任意過程,允許字元出棧,求所有的可能性 思路 模擬出棧入棧的過程,暴力列舉每一種情況。include include include include include using namespace std int n char str 1000 vo...

棧的入棧,出棧,顯示入棧元素

要實現的功能如下 printf t t1.入棧 n printf t t2.出棧 n printf t t3.顯示棧內元素 n define maxsize 5 巨集定義 typedef struct stack 定義棧 void push stack p,int e void printstack...