出棧序列問題

2022-10-09 12:03:09 字數 701 閱讀 5697

棧之根本——後進先出(last in first out,lifo)

要解決這類問題:最本質就是出棧的時候,可以邊入棧邊出棧。

考慮:設棧的輸入序列是1,2,3則出棧的序列有?

1,2,3 1入棧出棧,2入棧出棧,3入棧出棧

1,3,2 1入棧出棧,2入棧,3入棧出棧,2出棧

2,1,3 1入棧,2入棧出棧,1出棧,3入棧出棧

2,3,1 1入棧,2入棧出棧,3入棧出棧,1出棧

3,2,1 1入棧,2入棧,3入棧出棧,2出棧,1出棧

輸入序列有n個資料元素,則出棧的可能序列有:

例如:某個棧的入棧序列是a,b,c,d,e,則可能的出棧序列是:

a、adbec

b、ebcad

c、bcdea

d、eabcd

對於選項a: a入棧出棧,之後bc入棧,d入棧出棧,選項顯示b即將出棧,但是這時棧裡還有bc而且c才是棧頂元素。所以a選項不可能。

對於選項b:如果e是第乙個出棧的元素,則abcd一定在e之前就入了棧,所以如果e是第乙個出棧的元素,則出棧順序一定是edcba

對於選項c: a入棧,b入棧出棧,c入棧出棧,d入棧出棧,e入棧出棧,最後a出棧。所以選項c正確。

對於選項d:同選項b。

棧(出棧序列)

已知自然數1,2,n 1 n 10000 依次入棧 即a1 c2,cn 是否為可能的出棧序列。例如 n 5時,3,4,2,1,5是乙個可能的出棧序列,因為其可以按如下操作獲得 push 1,push 2,push 3,pop,push 4,pop,pop,pop,push 5,pop input 輸...

可能的出棧序列問題

首先的前提是進棧一定是要按照順序進棧如1 2 3 4的順序,如果第乙個出的是4,那麼要依次先進棧1 2 3 4,然後出棧,這樣的話第乙個是4,沒有其他的元素可以再進棧了,所以只能按順序出棧,這樣出棧的順序就是4 3 2 1。假如出棧的順序是3 4 2 1,你就要先分析出3的情況,只有先將1 2 3入...

棧 出棧序列判定

給乙個初始的入棧序列,其次序即為元素的入棧次序,棧頂元素可以隨時出棧,每個元素只能入棧依次。輸入乙個入棧序列,後面依次輸入多個序列,請判斷這些序列是否為所給入棧序列合法的出棧序列。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個出棧序列,但4,3,5,1,2就...