多括號匹配——棧的應用
阿新 • • 發佈:2019-01-07
EOF ctrl+z 停止
EOF為計算機術語End Of File的縮寫。在作業系統中表示資料源無更多的資料可讀取。資料源通常稱為檔案或串流。在C標準庫中,像getchar這樣的資料讀取函式返回一個與符號(巨集)EOF相等的值來指明檔案結束的情況發生,EOF的真實值與不同的平臺有關(但通常是-1,比如在glibc中),並且不等於任何有效的字元程式碼。塊讀取函式返回讀取的位元組數,如果它小於要求讀取的位元組數,就會出現一個檔案結束符。
“test.cpp”
#include <iostream> using namespace std; #include <stack> bool Match(char c1,char c2) { if ((c1 == '{') && (c2 == '}')) { return true; } else if ((c1 == '[') && (c2 == ']')) { return true; } else if ((c1 == '(') && (c2 == ')')) { return true; } else { return false; } } void test() { stack<char> s; char c = '0'; while ((c = getchar()) != EOF) { switch(c) { case '{': case '[': case '(': { s.push(c); } break; case '}': case ']': case ')': { if (s.empty()) { cout<<"已有右括號不匹配"<<endl; return; } if (Match(s.top(),c)) { s.pop(); } } break; default: break; } } if (s.empty() == false) { cout<<"左括號多餘"<<endl; } else { cout<<"括號匹配"<<endl; } } int main() { test(); system("pause"); return 0; }
測試用例