棧相關演算法

來源:互聯網
上載者:User

-括弧匹配

int match(char * cs, int size);

1.做一個空棧。讀入字元直到檔案尾。

2.對讀入的字元進行判斷,

2.1如果字元是一個左括弧,則入棧;

2.2如果字元是一個右括弧,如果棧空或彈出的左括弧不匹配,則匹配失敗;

2.3輸入結束,如果棧非空,則匹配失敗,否則匹配成功。

-計算尾碼運算式的值(假定尾碼運算式正確)

int postfixValue(char * expression, int size);

1.做一個空棧,讀入字元直到檔案尾。

2.對讀入的字元進行判斷,

2.1如果是數字,則入棧;

2.2如果是運算子,則彈出兩個數字並將計算結果入棧。

3.計算完畢後,最後彈出的值即為最終計算結果。

-中綴運算式轉尾碼運算式(假定中綴運算式正確)

void convertExpression(char * expression, int size);

1.做一個空棧,讀入字元直到檔案尾。

2.對讀入的字元進行判斷,

2.1如果是運算元,則直接輸出;

2.2如果是運算子(+-*/)

2.2.1如果棧不空,並且棧頂元素的優先順序大於當前運算子優先順序,則輸出棧中所有優先順序大於當前元素的運算子;

2.2.2當前元素入棧;

2.2.3上述四個運算子優先順序均大於'('優先順序。

2.3如果是運算子'(',則入棧。

2.4如果是運算子')',則出棧所有'('之前的棧元素,'('出棧,但不加入最終運算式。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。