c语言判断一字符串左右括号是否匹配的问题!求助

#include<stdio.h>#include<string.h>#definem20typedefcharElemType;typedefstruct{ElemTy... #include<stdio.h>
#include<string.h>
#define m 20
typedef char ElemType;
typedef struct
{
ElemType stack[m];
int top;
}stacknode;
stacknode *sp;
Init(stacknode *st)
{
st->top=0;
return 0;
}
void Push(stacknode *st,ElemType x)
{
if(st->top==m)
printf("The stack is overflow!\n");
else
{
st->top=st->top+1;
st->stack[st->top]=x;
}
}
void Pop(stacknode *st)
{
st->top=st->top-1;
}
main()
{
char s[m];
int i;
printf("Creat a stack!\n");
Init(sp);
printf("Input a expression:\n");
gets(s);
for(i=0;i<strlen(s);i++)
{
if(s[i]=='(')
Push(sp,s[i]);
if(s[i]==')')
Pop(sp);
}
if(sp->top==0)
printf("左右括号是匹配的!\n");
else
printf("左右括号是不匹配的!\n");
}
不知为什么运行时总是出现“。。。已停止工作!”求高手指教
展开
 我来答
RABBITqyh
2012-12-06 · TA获得超过163个赞
知道小有建树答主
回答量:185
采纳率:33%
帮助的人:126万
展开全部
由于没有分配空间,,,修改如下

#include<stdio.h>
#include<string.h>
#include <stdlib.h> // !!!分配内存头文件
#define m 20
typedef char ElemType;
typedef struct
{
ElemType stack[m];
int top;
}stacknode;
stacknode *sp;
Init(stacknode *st)
{
st->top=0;
return 0;
}
void Push(stacknode *st,ElemType x)
{
if(st->top==m)
printf("The stack is overflow!\n");
else
{
st->top=st->top+1;
st->stack[st->top]=x;
}
}
void Pop(stacknode *st)
{
st->top=st->top-1;
}
main()
{
char s[m];
int i;
printf("Creat a stack!\n");
sp = (stacknode *)malloc(sizeof(stacknode)); // !!!添加的语句
Init(sp);
printf("Input a expression:\n");
gets(s);
for(i=0;i<strlen(s);i++)
{
if(s[i]=='(')
Push(sp,s[i]);
if(s[i]==')')
Pop(sp);
}
if(sp->top==0)
printf("左右括号是匹配的!\n");
else
printf("左右括号是不匹配的!\n");
}
夜神月YOONA
2012-12-06 · TA获得超过339个赞
知道小有建树答主
回答量:219
采纳率:0%
帮助的人:270万
展开全部
Init(stacknode *st) 没返回值,
stacknode *sp; 应该分配内存空间,即
stacknode *sp=new stacknode ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
记住一座城
2012-12-06 · TA获得超过728个赞
知道小有建树答主
回答量:1091
采纳率:33%
帮助的人:714万
展开全部
Init(stacknode *st) //你用的是turbo c这个能通过编译

{ //返回的返回类型没写,函数体内却有return

st->top=0;
return 0;
}
关键的错误是指针没有初始化。
Init(sp); //sp永远指向垃圾值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式