栈之括号匹配问题
2013-03-20 02:40
176 查看
栈(stack)是限制插入和删除只能在一个位置上进行的有序表,该位置是表的末端,即最后插入的元素的位置,叫做栈的顶(top)。栈的修改是按先进后出的原则进行的,因此,栈又叫LIFO(Last
In First Out)表。
栈有三种基本操作:
进栈在栈顶增加一个元素。出栈把栈顶元素删除。取栈顶元素在不删除的情况下得到栈顶元素的值。
另外很多实现可以完成一些其他的操作:
清空清空一个栈。求元素个数判空
判断一个栈是否为空。
//--------------------------------------------------------
了解一下STL(C++ Standard Library)中的stack的操作:
括号匹配问题
贴上自己渣渣的code:
In First Out)表。
栈有三种基本操作:
进栈在栈顶增加一个元素。出栈把栈顶元素删除。取栈顶元素在不删除的情况下得到栈顶元素的值。
另外很多实现可以完成一些其他的操作:
清空清空一个栈。求元素个数判空
判断一个栈是否为空。
//--------------------------------------------------------
了解一下STL(C++ Standard Library)中的stack的操作:
#include <stack> stack<类型名> s; s.empty( ) // 栈空返回true, 否则返回false s.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; }
相关文章推荐
- 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))
- 括号匹配问题(判断以及添加)
- [C++]连续最长括号匹配问题
- 括号匹配问题
- 【面试题】用栈解决括号匹配问题
- 详解括号匹配问题(STL stack)
- java--一道简单的括号匹配问题
- jobdu 26 括号匹配问题
- 括号匹配问题
- ACM-括号匹配问题
- 关于括号匹配问题!
- 一类关于括号匹配的问题 区间dp
- 括号匹配问题-栈的应用
- 括号匹配问题
- Java 用栈解决括号匹配问题
- 针对同一种类型的括号匹配问题
- 关于正则表达式^和小括号()匹配导致重复项的问题
- python正则表达式中的括号匹配问题
- 括号 匹配 排列问题
- 小辉浅谈括号匹配问题