使用链栈判断输入的表达式中的括号是否配对
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>
相关文章推荐
- 环形数组最大子数组之和
- 进度条第四周
- js事件处理程序跨浏览器解决方案
- C语言基本概念之序列点
- 【phpcms-v9】怎样给网站前台的个别页面更换新的模板?
- canvas实现图片尺寸等比压缩并转换为base64字符串
- Win10 VS2013 Compile Intro - C2011 Error
- 小甲鱼数据结构02谈谈线性表
- 利用github和hexo一步步生成个人博客(1)---环境搭建
- 红糖水与白糖水的交换
- 第四周学习进度
- 让LoadRunner再次走下神坛
- HDU 5652 India and China Origins
- HDU 5651 xiaoxin juju needs help
- 【phpcms-v9】缓存目录caches下的各个文件的作用
- hdu1081 To The Max--DP(最大子矩阵和)
- [BZOJ2049][SDOI2008]Cave 洞穴勘测(LCT)
- Html - 对话箭头
- (a^b)%c和(a/b)%c
- 处理流程和数据流程