編寫乙個演算法,判斷鍵盤輸入的表示式是否配對。(假設括號只包含「(」 「)」 。
(1)所謂括號配對,就是
(2)輸入的字串中,可能包含」(」,「)」(也可能沒有),數字,及其他符號。
(3)每當掃瞄字串元素**現 「)」,需要進行括號匹配檢查。檢查方式為——
看最近出現的"(",而用什麼儲存 「(」呢? 棧是選擇之一。
那棧的儲存狀態是,要麼有"(",要麼為空。
(4)根據以上分析,整個演算法的流程是:
直到發現不匹配或者字串終止。
如果掃瞄字串終止後,棧中還有元素,則配對不成功。
#include
bool ismatchparen
(elementtype *expression)}}
}if(!
isstackempty
(s))
ismatch=
false
;destroystack
(s);
return ismatch;
}
(1)獲取棧頂元素和出棧 的區別以及使用場景。
參考文獻
《資料結構教程》 第四版 李春葆等
資料結構 棧的應用 括號匹配
include include include 鏈式棧 括號匹配校驗 define success 0 define failure 1 typedef struct nodestnode def typedef struct linkstackstlinkstack def typedef voi...
資料結構之棧及棧的應用(括號匹配問題)
棧簡介 棧是一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一段稱為棧頂,另一端稱為棧底。不含任何元素的棧稱為空棧,其特點為 先進後出。棧功能 可以將資料從一種序列變為另一種序列 注 來自網路 1.實現棧的如下介面 實現成動態棧 typedef int data...
資料結構實驗之棧四 括號匹配
time limit 1000ms memory limit 65536k 給你一串字元,不超過50個字元,可能包括括號 數字 字母 標點符號 空格,你的任務是檢查這一串字元中的 是否匹配。輸入資料有多組,處理到檔案結束。如果匹配就輸出 yes 不匹配輸出 no sin 20 10 yesno ma...