多括号匹配——栈的应用

来源:互联网 发布:java解析json数组 编辑:程序博客网 时间:2024/06/06 18:15

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;}

测试用例



0 0
原创粉丝点击