第6周项目3-括号的匹配
2015-10-09 08:31
316 查看
问题及描述:
代码:
运行结果:
* * Copyright (c) 2015, 烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称: listack.cpp,main.cpp,listack.h * 作者:高哲 * 完成日期:2015年10月9日 * 版本号:codeblocks * * 问题描述:假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配 * 输入描述:输入一个式子 * 程序输出:是否匹配 */
代码:
#ifndef SQSTACK_H_INCLUDED #define SQSTACK_H_INCLUDED #include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef char ElemType; typedef struct { ElemType data[MaxSize]; int top; //栈指针 } SqStack; //顺序栈类型定义 void InitStack(SqStack *&s); //初始化栈 bool StackEmpty(SqStack *s); //栈是否为空 bool Push(SqStack *&s,ElemType e); //入栈 bool Pop(SqStack *&s,ElemType &e); //出栈 #endif // SQSTACK_H_INCLUDED
#include"sqstack.h" void InitStack(SqStack *&s) { s=(SqStack *)malloc(sizeof(SqStack)); 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; }
#include"sqstack.h" int main() { char c; char st[50]; int d=1, i; SqStack *s; InitStack(s); printf("请输入表达式:"); scanf("%s", st); 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) printf("配对正确!!\n"); . else
运行结果:
相关文章推荐
- 第四周 多项式求和
- 第六周 项目2-建立链栈算法库
- VS2010+2.4.11的persistence.cpp line 5008 错误
- open cv 安装篇
- 项目4 -- 数制转换
- MFC如何使控件大小随着对话框大小自动调整
- 第六周上机实践—项目3—括号的匹配
- 第三周,项目二
- 网站收藏
- 天下没有不会这么回事!不会就学——北漂18年(28)
- 第四周实践项目6-多项式求和
- 第六周 项目1-建立顺序栈算法库
- 第三周项目4 顺序表的应用
- 第六周—项目3 - 括号的匹配
- 第六周 项目1-建立顺序栈算法库
- 第四周项目3-单链表应用(1)
- 加载图片的几种方式
- ECS Linux开启swap(虚拟内存)
- 第四周 项目二-建立单链表算法库
- 2015-10-9 【项目1 - 建立顺序栈算法库】