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

有一道关于c语言栈的题目,小弟实在是不会望各位高手能给予解答!!假设算术表达式中只有圆括号,请设计一个算法intmatch(char*exp,int&pos),利用栈判断... 有一道关于c语言栈的题目,小弟实在是不会 望各位高手能给予解答!!
假设算术表达式中只有圆括号,请设计一个算法int match(char*exp,int&pos),利用栈判断一个算术表达式exp(用字符串表示)中的圆括号是否匹配。若匹配,函数返回1,否则,函数返回0.
展开
 我来答
百度网友11d084aba
2009-11-18 · TA获得超过100个赞
知道答主
回答量:69
采纳率:0%
帮助的人: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,exp[i]) ==-1){
return 0; //左括号太多
}
printf("%d,%d\n",i,st.top);
}
else if(exp[i]==')'){
if( Pop(&st) ==-1){
return 0; //右括号太多
}
printf("%d,%d\n",i,st.top);
}
++i;
}
return isEmptyStack(&st); //返回0表明右括号个数不足
}
int main()
{ char *ch="(()())()()(()())()()";
printf("%d\n",match(ch,stack));
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式