Java實現判斷入棧序列是否可以以某個序列出棧

2021-08-27 12:19:22 字數 1226 閱讀 5954

輸入第乙個序列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,以此類推,最後棧為空且兩個序列都被...