C语言 题目 急求高手解答!

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:36:28
有一道关于c语言栈的题目,小弟实在是不会 望各位高手能给予解答!!
假设算术表达式中只有圆括号,请设计一个算法int match(char*exp,int&pos),利用栈判断一个算术表达式exp(用字符串表示)中的圆括号是否匹配。若匹配,函数返回1,否则,函数返回0.

#include <stdio.h>
#include <stdlib.h>

#define MAXLEN 100 //栈的容量
typedef struct{ //定义栈结构
char data[MAXLEN];
int top;
}qStack;

qStack stack; //全局栈
void InitStack(qStack *st) //初始化栈
{
st->top=-1;
}
int isEmptyStack(qStack *st) //判断栈为空
{ printf("%d\n",st->top);
return (st->top==-1);
}
int Push(qStack *st,char ch) //入栈操作
{ if(st->top==MAXLEN){
return -1;//入栈错误
}
st->data[++st->top]=ch;
return 0;
}
int Pop(qStack *st) //出栈操作
{ if(st->top==-1){
return -1; //操作错误返回-1
}
else st->top--;
return 0; //操作正确返回0
}

int match(char *exp,qStack *st) //计算括号是否匹配
{ int i=0;
InitStack(&st);
while(exp[i]!='\0'){
if(exp[i]=='('){
if( Push(&st,e