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

2021-07-11 10:42:52 字數 756 閱讀 4292

題目描述

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

思路:先將入棧序列放入佇列queue中。為入棧序列維護棧結構stack。對出棧序列進行如下操作:

如果棧頂是出棧元素,出棧。

如果棧頂不是出棧元素,在佇列中查詢出棧元素,並將出棧元素之前的元素出佇列,並且壓入stack中,如果在佇列中沒找到對應元素,則為非法序列。

**如下:

//例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。

//借助乙個佇列和乙個棧結構

public boolean ispoporder(int pusha,int popa)

for(int i=0;iqueue.add(pusha[i]);

}for(int i=0;iint ele = popa[i];

if(!seq.isempty() && seq.peek()==ele)else

if(queue.isempty())

queue.poll(); //將ele元素出佇列,因為要從棧中彈出,就不入棧了}}

return

true;

}

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

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

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

題目 鐵路的排程站如下 火車編號為 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 不可行,...