用栈检测括号匹配出现()[] {}三种括号,嵌套时不允许出现交叉,且只能大括号嵌套中括号,中括号嵌套小括号,求代码~中括
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/06 10:50:51
用栈检测括号匹配
出现()[] {}三种括号,嵌套时不允许出现交叉,且只能大括号嵌套中括号,中括号嵌套小括号,求代码~
中括号和大括号不允许单独出现
出现()[] {}三种括号,嵌套时不允许出现交叉,且只能大括号嵌套中括号,中括号嵌套小括号,求代码~
中括号和大括号不允许单独出现
#include
#include
#define MaxSize 100
typedef char ElemType;//定义数据类型
//定义顺序栈
typedef struct
{
\x09ElemType data[MaxSize];//数据域
\x09int top;//栈顶指针
}SeqStack;
//栈初始化
int InitStack(SeqStack *s)
{
\x09s->top=-1;//初始化栈顶,指向空
\x09return 1;
}
//入栈
int Push(SeqStack *s,ElemType x)
{
\x09if (s->top == MaxSize -1 )
\x09{
\x09\x09printf("栈已满,不能入栈.\n");
\x09\x09return 0;
\x09}
\x09else
\x09{
\x09\x09s->top++;//栈顶指针上移
\x09\x09s->data[s->top] = x;//数据元素入栈\x09\x09
\x09}
\x09return 1;
}
//出栈
int Pop(SeqStack *s,ElemType *x)
{
\x09if (s->top == -1)
{
\x09\x09printf("栈为空,不能出栈.\n");
\x09\x09return 0;
\x09}
\x09else
\x09{
\x09\x09*x=s->data[s->top];//取出栈顶元素值
\x09\x09s->top--;//栈顶指针下移
\x09}
\x09return 1;
}
//取栈顶值
int GetTop(SeqStack *s,ElemType *x)
{
\x09if (s->top == -1)
{
\x09\x09printf("栈为空,不能取值.\n");
\x09\x09return 0;
\x09}
\x09else
\x09{
\x09\x09*x=s->data[s->top];//取出栈顶元素值
\x09}
\x09return 1;
}
//判断栈是否为空
int IsEmpty(SeqStack *s)
{
\x09if(s->top==-1)
\x09\x09return 1;
\x09return 0;
}
int Check(char str[],int len)
{
\x09int i;
\x09int flag=1;//合法标志0-不合法 1-合法
\x09int exist=0;//小括号存在标志 0-不在 1-在
\x09ElemType x;
\x09SeqStack s;//栈s
\x09
\x09//栈初始化
\x09InitStack(&s);
\x09for(i=0;i=MaxSize)//超过定义长度
\x09\x09\x09return 1;
\x09\x09
\x09\x09if(Check(str,len)==1)
\x09\x09\x09printf("匹配合法!\n");
\x09\x09else
\x09\x09\x09printf("不合法\n");
\x09\x09printf("是否继续?1-是,0否 :");
\x09\x09if(scanf("%d",&i)!=1 || i!=1)
\x09\x09\x09break;
\x09\x09fflush(stdin);
\x09}
\x09return 0;
}
#include
#define MaxSize 100
typedef char ElemType;//定义数据类型
//定义顺序栈
typedef struct
{
\x09ElemType data[MaxSize];//数据域
\x09int top;//栈顶指针
}SeqStack;
//栈初始化
int InitStack(SeqStack *s)
{
\x09s->top=-1;//初始化栈顶,指向空
\x09return 1;
}
//入栈
int Push(SeqStack *s,ElemType x)
{
\x09if (s->top == MaxSize -1 )
\x09{
\x09\x09printf("栈已满,不能入栈.\n");
\x09\x09return 0;
\x09}
\x09else
\x09{
\x09\x09s->top++;//栈顶指针上移
\x09\x09s->data[s->top] = x;//数据元素入栈\x09\x09
\x09}
\x09return 1;
}
//出栈
int Pop(SeqStack *s,ElemType *x)
{
\x09if (s->top == -1)
{
\x09\x09printf("栈为空,不能出栈.\n");
\x09\x09return 0;
\x09}
\x09else
\x09{
\x09\x09*x=s->data[s->top];//取出栈顶元素值
\x09\x09s->top--;//栈顶指针下移
\x09}
\x09return 1;
}
//取栈顶值
int GetTop(SeqStack *s,ElemType *x)
{
\x09if (s->top == -1)
{
\x09\x09printf("栈为空,不能取值.\n");
\x09\x09return 0;
\x09}
\x09else
\x09{
\x09\x09*x=s->data[s->top];//取出栈顶元素值
\x09}
\x09return 1;
}
//判断栈是否为空
int IsEmpty(SeqStack *s)
{
\x09if(s->top==-1)
\x09\x09return 1;
\x09return 0;
}
int Check(char str[],int len)
{
\x09int i;
\x09int flag=1;//合法标志0-不合法 1-合法
\x09int exist=0;//小括号存在标志 0-不在 1-在
\x09ElemType x;
\x09SeqStack s;//栈s
\x09
\x09//栈初始化
\x09InitStack(&s);
\x09for(i=0;i=MaxSize)//超过定义长度
\x09\x09\x09return 1;
\x09\x09
\x09\x09if(Check(str,len)==1)
\x09\x09\x09printf("匹配合法!\n");
\x09\x09else
\x09\x09\x09printf("不合法\n");
\x09\x09printf("是否继续?1-是,0否 :");
\x09\x09if(scanf("%d",&i)!=1 || i!=1)
\x09\x09\x09break;
\x09\x09fflush(stdin);
\x09}
\x09return 0;
}
用栈检测括号匹配出现()[] {}三种括号,嵌套时不允许出现交叉,且只能大括号嵌套中括号,中括号嵌套小括号,求代码~中括
c++括号匹配检验利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随
表达式括号匹配问题一个表达式中包括变量、常量、操作符、圆括号,圆括号可以嵌套,编写程序判断表达式中的括号是否正确匹配.输
小括号 大括号 中括号 用英语分别怎么说
循环语句的嵌套结构可以省略花括号吗
数学算数中大括号,中括号,小括号
小括号 中括号 大括号 比大括号再小一级的是什么括号?
小括号、中括号、大括号是什么时候发明的?
小括号(),中括号〔 〕.大括号{}对吗
易语言括号问题我想知道在编写代码的时候小括号 中括号 大括号里都写什么值
已知-大括号-中括号-(-X)中括号 大括号=-3 求X的相反数
加小括号或中括号