學習過在資料結構的人肯定遇到過很多這種題目
比如給定乙個序列 如 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就不可能是該壓棧序列的彈出序列。解題思路 利用乙個真實的棧...