编写一个表达式中括号是否正确配对的算法
来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/05/07 14:34:58
编写一个表达式中括号是否正确配对的算法
这是我编的,
#include "stdio.h"
#include "stdlib.h"
#define maxsize 100
typedef struct
{
\x05char*base;
\x05char*top;
\x05int size;
}stack;
void main()
{
\x05char L[maxsize];
\x05char*p;
\x05stack *S;
\x05int a,b,c,a1,b1,c1;
\x05a=b=c=a1=b1=c1=0;
S=(stack*)malloc(sizeof(stack));
S->base=(char*)malloc(maxsize*sizeof(char));
S->size=maxsize;
S->top=S->base;
printf("输入一个表达式存入L中:");
scanf("%s",L);
\x05p=L;
\x05while(*p)
{
\x05switch(*p)
\x05{
\x05\x05case '(' :a++;*S->top++=*p;break;
\x05\x05case ')' :a1++;if(S->top!=S->base&&a1==a){S->top--;a--;break;}
\x05\x05 else printf("配对不正确:\n");exit(0);
\x05\x05case '[' :b++;*S->top++=*p;break;
\x05\x05case ']' :b1++;if(S->top!=S->base&&b1==b){S->top--;b--;break;}
\x05\x05 else printf("配对不正确:\n");exit(0);
\x05\x05case '{' :c++;*S->top++=*p;break;
\x05\x05case '}' :c1++;if(S->top!=S->base&&c1==c){S->top--;c--;break;}
\x05\x05 else printf("配对不正确:\n");exit(0);
\x05\x05default :break;
\x05}
\x05p++;
}
\x05if(S->top==S->base)
\x05printf("配对正确:\n");
\x05else
\x05printf("配对不正确:\n");
}
再问: 可不可以不用case
再答: 那用if条件句 (S->top!=S->base&&a1==a)有点错误,应改为(S->top!=S->base&&a1==a&&a1>b&&a1>c) 下面的两句一样要改。这是“期待的急迫程度”问题。自己编的,不简洁,不过很容易理解。我在尝试改进一下,成功后再给你
#include "stdio.h"
#include "stdlib.h"
#define maxsize 100
typedef struct
{
\x05char*base;
\x05char*top;
\x05int size;
}stack;
void main()
{
\x05char L[maxsize];
\x05char*p;
\x05stack *S;
\x05int a,b,c,a1,b1,c1;
\x05a=b=c=a1=b1=c1=0;
S=(stack*)malloc(sizeof(stack));
S->base=(char*)malloc(maxsize*sizeof(char));
S->size=maxsize;
S->top=S->base;
printf("输入一个表达式存入L中:");
scanf("%s",L);
\x05p=L;
\x05while(*p)
{
\x05switch(*p)
\x05{
\x05\x05case '(' :a++;*S->top++=*p;break;
\x05\x05case ')' :a1++;if(S->top!=S->base&&a1==a){S->top--;a--;break;}
\x05\x05 else printf("配对不正确:\n");exit(0);
\x05\x05case '[' :b++;*S->top++=*p;break;
\x05\x05case ']' :b1++;if(S->top!=S->base&&b1==b){S->top--;b--;break;}
\x05\x05 else printf("配对不正确:\n");exit(0);
\x05\x05case '{' :c++;*S->top++=*p;break;
\x05\x05case '}' :c1++;if(S->top!=S->base&&c1==c){S->top--;c--;break;}
\x05\x05 else printf("配对不正确:\n");exit(0);
\x05\x05default :break;
\x05}
\x05p++;
}
\x05if(S->top==S->base)
\x05printf("配对正确:\n");
\x05else
\x05printf("配对不正确:\n");
}
再问: 可不可以不用case
再答: 那用if条件句 (S->top!=S->base&&a1==a)有点错误,应改为(S->top!=S->base&&a1==a&&a1>b&&a1>c) 下面的两句一样要改。这是“期待的急迫程度”问题。自己编的,不简洁,不过很容易理解。我在尝试改进一下,成功后再给你
编写一个表达式中括号是否正确配对的算法
编写一个判断算术表达式中开括号闭括号是否配对的算法
用栈来判断一个表达式中的括号(仅有一种括号,小、中或大括号)是否配对.编写并实现它的算法.
分不多,数据结构,试写一个判别表达式中开、闭括号是否配对出现的算法.
试写一个判别表达式中括号是否配对出现的算法.
在Java中,设计一个算法,判断一个算术表达式中的括号是否配对.
C语言用栈写一个判断输入的表达式的括号是否正确的算法?
栈和队列问题算法假设一个人算术表达式包含圆括弧、中括弧和花括弧三种类型的括弧,编写一个判别表达式中括弧是否正确匹配的算法
表达式括号匹配问题一个表达式中包括变量、常量、操作符、圆括号,圆括号可以嵌套,编写程序判断表达式中的括号是否正确匹配.输
2.循环向量中的循环队列.队列的长度公式是什么?如何判断一个算术表达式的园括号是否正确配对?
试用C语言设计一个程序,程序的功能是接收任意输入一个算术表达式,判断表达式中的括号是否配对出现.
pascal括号匹配描述 给定一个算术表达式,检查其中的圆括号是否配对,给出适当信息(正好:Yes,左括号多:Left,