題目描述
輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列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 不可行,...