輸出所有可能的出棧順序

2021-10-18 04:44:40 字數 821 閱讀 8903

//構造棧類結構體

stack;

void

initstack

(stack *s,

int n)

//初始化棧的結構

void

copystack

(stack *ss, stack *s)

//複製函式

void

outputstack

(stack* s)

//輸出函式

intstackempty

(stack* s)

//判斷棧是否為空

void

push

(stack* s,

int x)

//把新的元素壓入棧

intpop

(stack* s)

//把函式送出棧

void

stackseq

(stack *input, stack *s, stack *output)

}else

push

(s,pop

(input));

/*再輸入乙個元素*/

stackseq

(input, s, output);}

}void

main()

//主函式

給定入棧順序,輸出所有可能出棧情況及所有情況的總數

乙個長度為n的無重複序列入棧的所有出棧方式 例如1 2 3這三個數字,入棧並出棧共有5種方式,分別為 321 312 231 213 123。那麼對於長度為n的無重複序列中所有的出棧方式有哪些呢?為了設計計算的演算法,我們可以用佇列 queue 來模擬輸入,佇列的輸出則按照原先序列的順序。使用乙個棧...

關於給定入棧順序,求所有可能的出棧順序的討論

最近學習資料結構,關於給定入棧順序,求所有可能的出棧順序的問題有些迷惑 現在也是 於是搜尋了一些相關的材料。我覺得可能是因為目前我沒有理解問題而無法得出答案。詳情見下。先給出算所有出棧可能的個數的公式,由卡特蘭數可以得到 n 2n n n 1 該公式 c 2n,n n 1 c 2n,n 表示2n裡取...

窮舉所有可能的出棧序列

輸入乙個入棧序列,輸出可能的出棧序列。輸入格式 第一行輸入乙個整數 n 表示入棧序列的長度。第二行輸入 n 個數字,表示入棧序列。輸出格式 輸出所有可能的出棧序列 輸入樣例 3 1 2 3輸出樣例 1 2 3 1 3 2 2 1 3 2 3 1 3 2 1很容易看出來,本題目是一道遞迴題。可以通過窮...