栈之括号匹配问题

来源:互联网 发布:学校网络舆情监控制度 编辑:程序博客网 时间:2024/03/29 09:53

    栈stack是限制插入和删除只能在一个位置上进行的有序表,该位置是表的末端,即最后插入的元素的位置,叫做栈的顶(top)。栈的修改是按先进后出的原则进行的,因此,栈又叫LIFO(Last In First Out)表。


栈有三种基本操作

进栈
在栈顶增加一个元素。
出栈
把栈顶元素删除。
取栈顶元素
在不删除的情况下得到栈顶元素的值。

另外很多实现可以完成一些其他的操作:

清空
清空一个栈。
求元素个数
判空

判断一个栈是否为空。

//--------------------------------------------------------

了解一下STL(C++ Standard Library)中的stack的操作:

#include <stack>stack<类型名> s;s.empty( )       // 栈空返回true, 否则返回falses.pop( )          //移除堆栈中最顶层元素s.push( )        //压栈s.size( )          //返回当前栈中的元素个数s.top( )            //引用栈顶元素


括号匹配问题

贴上自己渣渣的code:

#include <iostream>#include <stack>using namespace std;stack<char> s;int main(){char c, x;c=getchar();while(c!='\n'){if(c=='['||c=='('||c=='>') s.push(c);        if(c==')'){            if(s.top()!='('){                cout<<"Don't match!"<<endl;                break;        }        else s.pop();        }        if(c==']'){            if(s.top()!='['){                           cout<<"Don't match!"<<endl;            break;            }        else s.pop();                    }        if(c=='}'){            if(s.top()!='{'){                cout<<"Don't match!"<<endl;                break;            }        else s.pop();        }        if(c=='>'){            if(s.top()!='<'){                cout<<"Don't match!"<<endl;                break;        }        else s.pop();        }        c=getchar();    }    if( s.size()) cout<<"Don't match!"<<endl;else cout<<"It's match!"<<endl;    return 0;}


原创粉丝点击