栈之括号匹配问题

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

    原文作者:括号匹配问题
    原文地址: https://blog.csdn.net/yew1eb/article/details/8694511
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞