程序题目:
假设一个算数表达式中可以包含三种括号:圆括号 方括号 花括号,且这三种括号可
以按任意的次序嵌套使用.编写判别给定表达式中所含括号是否正确配对出现的算法
需求分析:
1、 本程序可实现对已经存入的顺序表判断括号是否符合匹配规则。
2、 根据输入数据判断,如果输入的为左括号,直接执行进栈操作,若输入的为
右括号,查询是否已存入栈顶的元素与之匹配,如果匹配则输出括号匹配,否
则输出不匹配。
概要设计:
为实现上述程序,设计了一下几个函数
1、 int InitStack (SqStack &S) //创建新栈
2、 int Push(SqStack &S,char &e)//向栈中插入新的元素
3、 int Pop(SqStack &S,char *str)//将 S 中栈顶的元素存入 str 中
4、 void Match(SqStack &S,char *str)//查看括号是否匹配。
详细程序:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef struct
{
char *base;
char *top;
int stacksize;
}SqStack;
int InitStack(SqStack &S)
{
S.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));
if(!S.base)
exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
int Push(SqStack &S,char &e)