第6周项目3- 括号的匹配
2015-10-08 20:44
323 查看
/*Copyright (c) 2015, 烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:H1.cpp * 作者:辛志勐 * 完成日期:2015年10月5日 * 版本号:Code::Blocks * 问题描述:编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 假设表达式中允许三种括号:圆括号、方括号和大括号。 * 输入描述:无 * 程序输出:栈表的结果 */
#include <stdio.h>
#include <malloc.h>
#define MaxSize 100
typedef 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); //输出栈
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");
}
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
printf("配对错误!!\n");
return 0;
}
知识点总结:出栈入栈应用,考察C语言的条件语句的使用,对抽象概念的理解。
学习心得:代码经过上述修改依然能正确输出结果,这样写理解起来容易一些。
相关文章推荐
- OBIEE中JS的使用---dashboard中prompt的展示和隐藏
- Linux内核工程导论——存储:USB
- superoj754 游戏
- 多线程的初步学习
- tomcat 根目录 session
- Unity 学习笔记(1)
- 此文为转载,虽然写的是PHP,但是思路同样值得javaer参考!
- 杭电acm--2080
- Python学习笔记 -- 第四章
- 面试题30:最小的k个数(未)
- CodeForces 149D Coloring Brackets(区间DP+dfs)
- thinkphp模板页限制标题字数
- Linux内核工程导论——存储:通用块层
- 【Sow&Harvest】体验C++第一个月(开虐)
- 单元测试应该测什么
- 目标检测光流法(四):matlab下光流法工具箱
- 下拉框 选择日期
- deeplearning系列(四)主成分分析与白化
- Intent Firewall 防火墙
- 自定义BaseAdapter