數據結構筆記---棧的“不可能出現的出棧順序”思路總結


1.牛客網上一道題:

已知一個棧的入棧序列是mnxyz,則不可能出現的出棧順序是?

A. mnxyz
B. xnyzm
C. nymxz
D. nmyzx

答案是C。

 

可能我腦子比較笨吧,看來看去,感覺沒看懂這類題型的意思。

因為我們都知道棧(stack)其實就是跟彈夾一樣,子彈是往下壓進去的,你如果認為第一發子彈有問題(汗)你只能從頭把所有子彈取出來才能替換第一發。相信着個大家都懂棧的先進后出概念。但是具體出棧順序就不懂了,於是我來給大家整理一下我的思路,避免像我一樣繞進去了。。。

 

2.解題思路:

/////////////////////////////////////////////////////////////////////////

我們來看一下答案D是具體怎么操作的:

我們先入棧 mn ,  (按照給的順序),棧現有 = [mn]  

然后出棧 nm,棧現有 = []  , 出棧順序  = [nm]

然后入棧xy, 出棧 y,棧現有 = [x]  , 出棧順序 = [mny]

然后入棧z,出棧 z,棧現有 = [x] , 出棧順序 = [mnyz]

然后出棧 x,棧現有 = [], 出棧順序 = [mnyzx]

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

然后我們來看一下為啥C是錯的:

我們先入棧 mn ,  (按照給的順序),棧現有 = [mn]

然后出棧 n,棧現有 = [m], 出棧順序  = [n]

然后入棧xy, 出棧 y,棧現有 = [mx], 出棧順序 = [ny]

注意,就是這里,棧現有 = [mx],但是我們需要先出m來滿足出棧順序 = [nym],這是不符合先進后出的,所以說C是錯的!

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

后話:

這道題網上有很多快捷的解題方法,但是我是連基本的操作都沒搞懂之前,所以說希望這篇文章有幫到跟我一樣的人,Lol

 

 

引用:

https://www.zybang.com/question/2663139844fcef6512d6243287977396.html

https://blog.csdn.net/Zoooozz/article/details/80036919


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM