C 模板類實現棧(括號匹配問題)

2021-09-10 15:51:47 字數 996 閱讀 1431

棧的應用非常廣泛。請先實現乙個棧模板類(定義已在下面給出),然後利用這個棧類解決下面的問題:

給定乙個字串,長度小於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語言棧實現括號匹配

在文字處理軟體或編譯程式設計時,常常需要檢查乙個字串或乙個表示式中的括號是否 相匹配?匹配思想 從左至右掃瞄乙個字串 或表示式 則每個右括號將與最近遇到的那個左括 號相匹配。則可以在從左至右掃瞄過程中把所遇到的左括號存放到堆疊中。每當遇到乙個 右括號時,就將它與棧頂的左括號 如果存在 相匹配,同時從...