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

2021-09-12 04:00:19 字數 1264 閱讀 9817

題目描述:

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

class stack:

# 實現棧的功能

def __init__(self):

self.items =

# 判斷棧是否為空

def empty(self):

return self.items == none

# 返回棧的大小

def size(self):

return len(self.items)

# 返回棧頂元素

def peek(self):

if not self.empty():

return self.items[len(self.items)-1]

else:

return none

# 彈棧

def pop(self):

if len(self.items) > 0:

return self.items.pop()

else:

print("空棧")

return none

# 壓棧

def push(self, items):

def ispopserial(push, pop):

if push == none or pop == none:

return false

pushlen = len(push)

poplen = len(pop)

if pushlen != poplen:

return false

pushindex = 0

popindex = 0

stack = stack()

while pushindex < pushlen:

# 把push的序列依次入棧,直到棧頂元素等於pop序列的第乙個元素

stack.push(push[pushindex])

pushindex += 1

# 棧頂元素出棧,pop序列移動到下乙個元素

while not stack.empty() and stack.peek() == pop[popindex]:

stack.pop()

popindex += 1

# 棧為空,且pop序列中元素都被遍歷過

return stack.empty() and popindex == poplen

根據入棧順序判斷出棧順序是否合法

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

根據入棧順序判斷出棧序列正確與否

題目 鐵路的排程站如下 火車編號為 1 9,且不重複。如 編號分別為 1 2 3 4 5 的5個火車順序進站,那麼進站序列為 12345 全部進站後再順序出站,則出站序列為 54321 如果先進1,2,然後2出站,然後1出站,然後再3進站 出站,4進站 出站,5進站 出站,那麼出站序列就為21345...

出棧入棧順序問題

不定項選擇題 依次讀入資料元素序列入棧,每進乙個元素,機器可要求下乙個元素入棧或彈棧,如此進行,則棧空時彈出的元素構成的序列是以下 序列?牛客444334號 ada 可行步驟 a入棧,b入棧,c入棧,d入棧,d出棧,e入棧,e出棧,c出棧,f入棧,f出棧,b出棧,g入棧,g出棧,a出棧 b 不可行,...