判斷乙個序列是否是棧的彈出序列

2021-06-28 08:50:59 字數 746 閱讀 7243

學習過在資料結構的人肯定遇到過很多這種題目

比如給定乙個序列  如 1 2 3 4 5的入棧序列

問 4 5 3 2 1是不是前者的乙個出棧序列

首先看 出棧序列 4 5 3 2 1 第乙個元素是4 也就是說入棧時 必須要先找到4 然後出棧在繼續找 5 ,可以用乙個棧來儲存當前的入棧元素

步驟         

操作                

棧中元素             

彈出數字  第乙個為4

,先找到41

1 入棧1

22入棧

1 2 3

3入棧1 2 3

4 4入棧1 2 3 4

此時棧頂元素等於出棧順序的第乙個,找到了,下一步就是要出棧該元素 5

4 出棧

1 2 3

4 出棧順序往後移動,指向5 6

5入棧1 2 3 5

此時棧頂元素等於出棧順序的第乙個,找到了,下一步就是要出棧該元素 7

5出棧1 2 3

4 5 出棧往後移動  指向38

3出棧1 2 

4 5 3因為棧頂元素等於 出棧元素9

2出棧1

4 5 3 2因為棧頂元素等於 出棧元素10

1出棧

4 5 3 2 1出完了  如果佔為空 且出棧序列中沒有了其他就表示為

true

判斷乙個序列是否是棧的合法序列

棧的合法序列是就是通過一定次序的入棧,出棧後,能夠得到的有順序的一串數,比如說,我們將12345這五個數按照一定的入棧出棧順序進行出入棧,可以得到12345,54321 45321等序列。啦啦啦,重點來啦!我們不如就拿45321來舉例子吧 首先我們把45321這個序列存到乙個棧 s 裡面去,在宣告乙...

判斷乙個序列是否是另外乙個序列的子串行的演算法

思路一 從子串行中挨個找,找到乙個之後,擷取子串行和母序列之前的,然後繼續遞迴自身 1.先分析下找不到的情況,如果母序列從頭找到尾,也沒有找到,則視為不是其子序列 2.繼續分析找到的情況,如果找到之後,並且子串行的長度為1,則代表都找完了。3.如果這時子串行仍然還沒有找完,則擷取後繼續呼叫自身。pu...

判斷棧的彈出序列

題目描述 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。解題思路 利用乙個真實的棧...