您的位置:首页 > 其它

使用链栈判断输入的表达式中的括号是否配对

2016-03-27 09:58 369 查看
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef char ElemType;
typedef struct linknode
{
ElemType data;
struct linknode *next;
} LiStack;
bool Match(char exp[],int n);//判断表达式中括号是否配对
void InitStack(LiStack *L);//初始化栈
void DestroyStack(LiStack *L);//销毁栈
bool StackEmpty(LiStack *L);//判断栈是否为空
void Push(LiStack *L,ElemType e);//进栈
bool Pop(LiStack *L,ElemType &e);//出栈
bool GetTop(LiStack *L,ElemType &e);//取栈顶元素
int main()
{
ElemType exp[]={'a','(','c','e','m'};
cout<<Match(exp,5);
return 0;
}

<span style="color:#ff0000;">bool Match(ElemType exp[],int n)//判断表达式中括号是否配对
{
int i = 0;ElemType e;
bool match =true;
LiStack *st=new LiStack();
InitStack(st);
while(i<n&&match)       //扫描exp中的字符
{
if(exp[i]=='(')
Push(st,exp[i]);
else if(exp[i]==')')
{
if(GetTop(st,e))
{
if(e!='(')
match =false;
else Pop(st,e);
}
else match=false;
}
i++;
}
if(!StackEmpty(st))
match =false;

DestroyStack(st);
return match;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: