如何根據入棧序列判斷可能的出棧序列

2022-08-05 07:03:13 字數 1284 閱讀 9449

[tx面試題]

題目描述:

輸入兩個整數序列,其中乙個序列表示棧的push(入)序列,判斷另乙個序列有沒有可能是對應的pop(出)序列。

解答

假如輸入的push序列是:1、2、3、4、5,那麼3、2、5、4、1就可能是乙個pop序列,但是5、3、4、1、2就不可能是它的乙個pop序列了。

# 構造乙個棧  

class

stack

:def

__init__

(self, maxsize)

: self.top =

0 self.lst =

[none

]* maxsize

self.maxsize = maxsize

defpush

(self, x)

:if self.top == self.maxsize:

raise exception(

"棧滿"

) self.lst[self.top]

= x self.top +=

1def

pop(self)

:if self.top ==0:

raise exception(

"棧空"

) self.top -=

1return self.lst[self.top]

lis1 =[1

,2,3

,4,5

]lis2 =[3

,2,5

,4,1

]def

judge

(lst1, lst2)

: s = stack(10)

j =0for v in lst1:

s.push(v)

cur = s.pop(

)while cur == lst2[j]

: j +=

1if j >4:

break

if s.top ==0:

break

cur = s.pop(

) s.push(cur)

if j !=5:

return

false

return

true

print

(judge(lis1, lis2)

)# true

棧中常見問題 如何根據入棧序列判斷可能出棧序列

問題二 如何根據入棧序列判斷可能出棧序列 如入棧的子串行是,那麼出棧的順序有可能是麼?當然可以啦,我們這麼想,首先,棧是先進後出,一般先出棧頂的元素。那麼我們依次將輸入序列入棧,並判斷入棧以後的棧頂元素是否等於出棧序列的第乙個元素,那麼就將入棧的元素pop出。最後,看入棧的所有元素是否已經pop出。...

棧問題 根據入棧序列,得出可能的出棧序列

根據入棧序列,得出可能的出棧序列 例如 輸入 a b 輸出 a進a出b進b出 ab a進b進b出a出 ba 輸入 a b c 輸出 a進a出b進b出c進c出 abc a進a出b進c進c出b出 acb a進b進c進c出b出a出 cba a進b進b出c進c出a出 bca a進b進b出a出c進c出 bac...

「根據入棧順序判斷可能的出棧順序」python語言

題目描述 輸入兩個整數序列,其中乙個序列表示棧的push 入 順序,判斷另乙個序列有沒有可能是對應的pop 出 順序。class stack 實現棧的功能 def init self self.items 判斷棧是否為空 def empty self return self.items none 返...