项目 3 - 括号的匹配
来源:互联网 发布:informix数据库端口 编辑:程序博客网 时间:2024/06/08 08:42
/*
*Copyright (c) 2016,烟台大学计算机学院
*All right reserved.
*文件名称:test.cpp
*作者:杨天瑞
*完成日期:2016年9月29日
*版本号:v1.2.7
*
* 问题描述:判断左右括号是否匹配。
*程序输入:一行带有多种括号的运算。
*程序输出:括号的匹配是否正确。
zhan.cpp
main.cpp
*Copyright (c) 2016,烟台大学计算机学院
*All right reserved.
*文件名称:test.cpp
*作者:杨天瑞
*完成日期:2016年9月29日
*版本号:v1.2.7
*
* 问题描述:判断左右括号是否匹配。
*程序输入:一行带有多种括号的运算。
*程序输出:括号的匹配是否正确。
*/
zhan.h
#ifndef SQSTACK_H_INCLUDED#define SQSTACK_H_INCLUDED#include<stdio.h>#define MaxSize 100typedef char ElemType;typedef struct{ ElemType data[MaxSize]; int top; //栈指针} SqStack; //顺序栈类型定义void InitStack(SqStack *&s); //初始化栈void DestroyStack(SqStack *&s); //销毁栈bool StackEmpty(SqStack *s); //栈是否为空int StackLength(SqStack *s); //返回栈中元素个数——栈长度bool Push(SqStack *&s,ElemType e); //入栈bool Pop(SqStack *&s,ElemType &e); //出栈bool GetTop(SqStack *s,ElemType &e); //取栈顶数据元素void DispStack(SqStack *s); //输出栈bool isMatch(char *st);#endif // SQSTACK_H_INCLUDED
zhan.cpp
#include "zhan.h"#include<malloc.h>//初始化栈void InitStack(SqStack *&s){ s=(SqStack *)malloc(sizeof(SqStack));s->top=-1;}//销毁栈void DestroyStack(SqStack *&s){free(s);}//返回栈长度int StackLength(SqStack *s){ return(s->top+1);}//判断栈是否为空bool StackEmpty(SqStack *s){return(s->top==-1);}//进栈bool Push(SqStack *&s,ElemType e){if(s->top==MaxSize-1) return false; s->top++; s->data[s->top]=e; return true; }//出栈bool Pop(SqStack *&s,ElemType &e){ if(s->top==-1) return false; e=s->data[s->top]; s->top--; return true;}//取栈顶元素bool GetTop(SqStack *s,ElemType &e){ if(s->top==-1) return false; e=s->data[s->top]; return true;}//输出栈中元素void DispStack(SqStack *s) //输出栈{ int i; for (i=s->top;i>=0;i--) printf("%c ",s->data[i]); printf("\n");}bool isMatch(char *st){ int d=1, i; char c; SqStack *s; InitStack(s); for(i=0; st[i]!='\0'&&d; i++) { switch(st[i]) { case'(': case'[': case'{': Push(s, st[i]); break; case')': Pop(s, c); if(c!='(') d=0; break; case']': Pop(s, c); if(c!='[') d=0; break; case'}': Pop(s,c); if(c!='{') d=0; break; } } if(StackEmpty(s)&&d==1) return true; else return false;}
main.cpp
#include "zhan.h"int main(){ char st[50]; printf("请输入表达式:"); scanf("%s", st); if(isMatch(st)) printf("配对正确!!\n"); else printf("配对错误!!\n"); return 0;}
总结:
利用栈的方式对括号的匹配进行操作,对栈的理解跟容易了一些。
0 0
- 项目 3 - 括号的匹配
- 【项目3 - 括号的匹配】
- 项目3——括号的匹配
- 第六周--项目3括号的匹配
- 第六周 项目3-括号的匹配
- 第六周项目3括号的匹配
- 第六周 项目3 括号的匹配
- 第六周 项目3-括号的匹配
- 第六周项目3-括号的匹配
- 第六周项目3--括号的匹配
- 第六周项目3-括号的匹配
- 第六周-项目3-括号的匹配
- 第六周项目3-括号的匹配
- 第六周项目3--括号的匹配
- 第六周 项目3-括号的匹配
- 第六周项目3-括号的匹配
- 第六周项目3 括号的匹配
- 第六周项目3括号的匹配
- [c++]const
- 第五周 项目1--建立顺序栈算法库
- git代码管理简单总结之分支操作
- [C++]引用和三目运算符
- [C++]内联函数
- 项目 3 - 括号的匹配
- [C++]函数重载
- 【C++】类
- 如何快速的开发一个完整的iOS直播app(美颜篇)
- 【C++】构造函数和析构函数
- [c++]深拷贝和浅拷贝
- [C++]多个对象构造、析构、构造和析构的顺序
- 欢迎使用CSDN-markdown编辑器
- [C++]匿名对象