作业帮 > 综合 > 作业

数据结构:括号匹配问题.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 13:19:10
数据结构:括号匹配问题.
假设一个算术表达式中允许包含两种括号:()[] 其嵌套的次序随意,请设计一个算法判断一个算术表达式中的括号是否匹配
//用栈做的
#include
#include
#include
typedef struct _stack
{
\x09char *base;
\x09char *top;
\x09int num;
}Sqstack;
void InitStack(Sqstack &s)
{
\x09s.base=(char *)malloc(100*sizeof(char));
\x09if(s.base==NULL)
\x09{
\x09\x09printf("栈创建失败!\n");
\x09\x09return;
\x09}
\x09s.top=s.base;
\x09*s.top=0;
\x09s.num=100;
}
void push(Sqstack &s,char k)
{
\x09if((s.top-s.base)>=s.num)
\x09{
\x09\x09printf("栈已满!\n");
\x09\x09return;
\x09}
\x09*s.top++=k;
}
void pop(Sqstack &s)
{
\x09if(s.base==s.top)
\x09{
\x09\x09printf("该栈是空栈!\n");
\x09\x09return;
\x09}
\x09s.top--;
}
bool Isempty(Sqstack &s)
{
\x09if(s.base==s.top)
\x09\x09return true;
\x09return false;
}
bool Match(Sqstack &s)
{
\x09char str[100];
\x09int i;
\x09printf("请输入括号串:");
\x09scanf("%s",str);
\x09for(i=0;i