棧的應用非常廣泛。請先實現乙個棧模板類(定義已在下面給出),然後利用這個棧類解決下面的問題:
給定乙個字串,長度小於1000,其中只包含左右括號和大小寫英文本母。請編寫程式判斷輸入的字串裡的左右括號是否全部是匹配的,匹配規則即從內到外左括號都與其右邊距離最近的右括號匹配。如匹配,輸出「yes」,否則,輸出「no」。棧模板類定義如下:
#include #include using namespace std;
templateclass stack
;//請完成棧模板類的實現,並解決括號匹配問題
每個測例輸入乙個字串,長度小於 1000 ,大於 0 。
若輸入字串內的所有括號正確匹配,輸出「yes」,否則輸出「no」。
((let)(us)(practice)((stack)(template)))
()you(should))(out)put(no)
yesno
#include #include #include using namespace std;
string s;
templateclass stack
;templatestack::stack():top(-1)
templatevoid stack::push(const t &item)
template t stack::pop()
templateconst t &stack::peek() const
templatebool stack::isempty() const
int main(void)
} if(!t.isempty())
flag=1;
if(flag)
cout << "no" << endl;
else
cout << "yes" << endl;
s="";
} return 0;
}
括號匹配問題 棧實現佇列
在對棧的學習時,見到了兩個棧的應用場景,乙個是括號匹配問題,乙個是用棧來實現佇列。括號匹配問題的解決 首先基於棧的基礎上,實現括號匹配問題,要使用到棧的基本操作,入棧,獲取棧頂元素,出棧等。首先,先將左括號入棧,然後進行括號匹配,如果匹配成功,則讓已經匹配成功的左括號出棧,繼續進行匹配,直到外部的括...
棧實現括號匹配
匹配思想 從左至右掃瞄乙個字串 或表示式 則每個右括號將與最近遇到的那個左括號相匹配。則可以在從左至右掃瞄過程中把所遇到的左括號存放到堆疊中。每當遇到乙個右括號時,就將它與棧頂的左括號 如果存在 相匹配,同時從棧頂刪除該左括號。演算法思想 設定乙個棧,當讀到左括號時,左括號進棧。當讀到右括號時,則從...
c語言棧實現括號匹配
在文字處理軟體或編譯程式設計時,常常需要檢查乙個字串或乙個表示式中的括號是否 相匹配?匹配思想 從左至右掃瞄乙個字串 或表示式 則每個右括號將與最近遇到的那個左括 號相匹配。則可以在從左至右掃瞄過程中把所遇到的左括號存放到堆疊中。每當遇到乙個 右括號時,就將它與棧頂的左括號 如果存在 相匹配,同時從...