大話數據結構之棧和隊列

棧:棧是限定僅在表尾進行插入和刪除操做的線性表數據結構

隊列:隊列是隻容許在一端進行插入操做,而在另外一端進行刪除操做的線性表隊列

棧的插入操做,叫作進棧,也稱壓棧、入棧。相似子彈入彈夾求職

棧的刪除操做,叫做出棧,也有的叫做彈棧。相似彈夾中的子彈彈出來。遍歷

進棧出棧變化形式:數據

    若是咱們有三個整型數字元素一、二、3依次進棧會有哪些出棧次序呢?字符

  •     1.     1 、2 、3進,再3 、二、1出。出棧方式爲321。
  •     2.     1進,1出,2進,2出,3進,3出。出棧次序爲123。
  •     3.     1進,2進, 2出,1出,3進,3出。出棧次序爲213。
  •     4.     1進,1出,2進,3進,3出,2出。出棧次序爲132。
  •     5.     1進,2進,2出,3進,3出,1出。出棧次序爲231。

棧的應用-四則運算表達式求職數字

    1.後綴(逆波蘭)表示法定義。

        1.什麼是中綴表達式。

            9+(3-1) *3+10÷2

        2.什麼是後綴表達式。

            9 3 1 - 3 * + 10  2  / +

        3.那麼後綴表達式如何由中綴 表達式轉化而來呢?

            規則:從左到右遍歷中綴表達式的每一個數字和符號,如果數字就輸出,即成爲後綴表達式的一部分;如果符號,則判斷其與棧頂符號的優先級,是右括號或優先級低於棧頂符號(乘除優先加減)則棧頂元素依次出棧並輸出,並將當前符號進棧,一直到最終輸出後綴表達式爲止。

            1.初始化一個空棧,用來對符號進出棧使用。

            2.第一個字符是數字9,輸出9,後面是符號‘+’,進棧。

            3.第三個字符是「(」,依然是符號,因其只是左括號,還未配對,故進棧。

            4.第四個字符是數字3,輸出3,總表達式爲9 3,接着是‘-’,進棧。

            5.接下來是數字1,輸出,總表達式9 3 1,後面是符號「)」,此時咱們須要去匹配此前的"(",因此棧頂依次出棧,並輸出,直到「(」出棧爲止,此時左括號上方只有"-",所以輸出「-」,總表達式爲9 3 1 -。

            6.接下來,詳情請看《大話數據結構》第四章

相關文章
相關標籤/搜索