題目描述:
輸入兩個整數序列,其中乙個序列表示棧的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 不可行,...