設有乙個棧為s
設有一佇列q,q儲存了要求的s中元素出棧的順序
設有一佇列q_push,其中儲存了元素的入棧順序
判斷棧頂元素是否可以出棧,若為空,或者不為空但是棧頂元素不是q中當前資料,則不可以出棧.否則可以出棧
若棧頂元素可以出棧,則將其進行出棧,並將q隊首元素出隊
若棧頂元素不可以出棧,則在佇列q_push中元素不為空且不等於q的隊首元素的情況下,將q_push持續出隊,並將彈出的隊首元素都入棧到s中。
當迴圈結束時,q_push只有空與非空兩種可能。空說明沒找到這樣乙個符合要求的元素,即出棧佇列q非法,程式結束。若非空,說明找到了這樣乙個元素,回到步驟4
當迴圈結束時,判斷q是否為空,若非空,說明出棧順序不符合要求,否則,是符合要求的。
題目描述已知自然數1,2,...,n(1<=n<=100)依次入棧,請問序列c1,c2,...,cn是否為合法的出棧序列
輸入輸入包含多組測試資料。
每組測試資料的第一行為整數n(1<=n<=100),當n=0時,輸入結束。
第二行為n個正整數,以空格隔開,為出棧序列。
輸出對於每組輸入,輸出結果為一行字串。
如給出的序列是合法的出棧序列,則輸出yes,否則輸出no。
樣例輸入
53 4 2 1 5
53 5 1 4 2
0樣例輸出
yesno
/*這裡沒有很嚴格的使用前面提到的資料結構,而是根據題目特性進行了一些變形
這樣寫可讀性受到了一點影響,但是還是可以模擬到對應的資料結構上,而且**更簡潔一些
*/#include
typedef
struct
stack;
int main(void
)
//棧頂元素符合要求
else
}if(j!=n)
printf(
"no\n");
else
printf(
"yes\n");
}return0;
}
一般性問題的解決方法
step1 調研 調研即乙個專案或者課題的 是需要通過大量的調研獲取資料,研究現狀,問題實際等第一手資料。調研一般會由1天至百年之久,你要調查乙個商品 只需要1天,調查乙個商品的 波動需要1個月,乙個商品的供需則需要一年。最長的估計就是環境類或者宇宙類的問題了,也許等待百年才會發現一顆新星。step...
開機黑屏的一般解決方法
一 如果沒有電力 檢查pc電源電源介面和電源線通電情況 1.檢查機箱電源的介面和電源線,是否完好。如果介面和電源線有破損斷裂的應當及時更換。2.檢查主機板電源線插口。如果沒有破損,就將插口拔出再插入。一般可以解決,由於主機板接觸不良導致沒有電的情況。3檢查機箱電源 情況,我們一般都是利用替代法進行檢...
解決聯通塊問題的一般方法
戰爭中保持各個城市間的連通性非常重要。本題要求你編寫乙個報警程式,當失去乙個城市導致國家被 為多個無法連通的區域時,就發出紅色警報。注意 若該國本來就不完全連通,是 的k個區域,而失去乙個城市並不改變其他城市之間的連通性,則不要發出警報。輸入格式 輸入在第一行給出兩個整數n 0 n 500 和m 5...