#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 20
typedef struct{
char data[MAXSIZE];
int top;
}SeqStack;
SeqStack * initSeqStack(){
SeqStack * s = (SeqStack *)malloc(sizeof(SeqStack));
s->top = -1;
return s;
}
void pushSeqStack(SeqStack * s,char x){
if(s->top == MAXSIZE-1){
printf("the stack is full!\n");
}else{
s->top++;
s->data[s->top] = x;
}
}
char getSeqStack(SeqStack * s){
char x;
if(s->top == -1){
printf("the stack is empty!\n");
return '-1';
}else{
x = s->data[s->top];
return x;
}
}
void popSeqStack(SeqStack * s){
char x;
if(s->top == -1){
printf("the stack is empty!\n");
}else{
x = s->data[s->top];
s->top--;
}
}
void print(SeqStack * s){
for(int i=0;i<=s->top;i++){
printf("%3c",s->data[i]);
}
printf("\n");
}
void correct(char array[]){
SeqStack * s;
s = initSeqStack();
char x;
int i=0;
while(array[i] != '\0'){
if(array[i] == '(' || array[i] == '[' || array[i] == '{'){
pushSeqStack(s,array[i]);
i++;
}else if(array[i] == ')' || array[i] == ']' || array[i] == '}'){
x = getSeqStack(s);
if(array[i] == ')' && x == '('){
popSeqStack(s);
i++;
}else if(array[i] == ']' && x == '['){
popSeqStack(s);
i++;
}else if(array[i] == '}' && x == '{'){
popSeqStack(s);
i++;
}else{
break;
}
}else{
i++;
}
}
if(s->top != -1){
printf("error!\n");
}else{
printf("right!\n");
}
}
int main(){
char array[20];
printf("please input the string!\n");
gets(array);
correct(array);
return 0;
}
检查一个算术表达式中的括号是否匹配
最新推荐文章于 2021-09-21 17:24:23 发布