輸入第乙個序列insequence,是車廂入棧順序
輸入第二個序列outsequence,是車廂出棧順序
演算法判斷以insequence入棧的車廂可否以outsequence的順序出棧
若可以,則返回出入棧動作的順序並列印yes
若不可以,則返回出入棧動作的順序直到失敗的車廂並列印no
演算法的圖示:
帶括號的數字代表步數,紅叉代表出棧,入棧序列的指標需要左右移動故採用雙向鍊錶,出棧序列的指標只向右移動故採用單向鍊錶
[img]
package train;
public inte***ce adddelete
package train;
public class bidirectionallinkedlist implements adddelete
public void addnode(int newnumber)
tail.next = bn;
bn.last = tail;
tail = bn;
nodenumber++;
}public void deletetop()
}else
top = top.last;}}
public int getnodenumber()
}
package train;
public class bidirectionalnode
}
package train;
public class linkedlist implements adddelete
public void addnode(int newnumber)
tail.next = bn;
tail = bn;
nodenumber++;
}public void deletetop()
boolean isempty()
}
package train;
public class node
}
程式的執行結果:
返回no的例子:
[img]
返回yes的例子:
[img]
給定入棧序列判斷給定出棧序列是否合法
題目 輸入兩個整數序列。其中乙個序列表示棧的入棧順序,判斷另乙個序列有沒有可能是對應的出棧順序。思路 用乙個輔助棧,將入棧序列按照某種順序入棧,看是否可以產生出棧序列即可。1 如果當前棧為空,且入棧序列不空,則入棧序列的下乙個元素入棧 2 如果當前輔助棧的棧頂元素不等於出棧序列的首元素,那麼入棧序列...
3 5判斷出棧和入棧操作序列是否合法
題目描述 假設以i和o分別表示入棧和出棧操作,棧的初試狀態和終態都是空,出棧和入棧序列僅有i和o組成。稱可以操作的序列為合法序列,否則為非法序列。寫乙個演算法判斷乙個給定的序列是否合法。若合法返回true,否則返回false.題目分析 乙個由出棧操作和入棧操作組成的序列,要是合法序列應該滿足 1.入...
檢驗入棧序列 出棧序列是否合法
題目 元素出棧 入棧順序的合法性。如 入棧的序列 1,2,3,4,5 出棧序列為 4,5,3,2,1 則合法。入棧的序列 1,2,3,4,5 出棧序列為 4,5,2,3,1 則不合法。思路 借用乙個輔助棧,先按照入棧順序push,直到棧頂元素和出棧序列相等就pop,以此類推,最後棧為空且兩個序列都被...