使用栈的括号匹配(c语言程序) 有什么错误?

我编了几个小时的程序调剂老是有一个错误各位大侠们可否帮我看下那里有错误#include<stdio.h>#include<stdlib.h>#defineMAX100ty... 我编了几个小时的程序调剂老是有一个错误 各位大侠们可否帮我看下那里有错误
#include<stdio.h>
#include<stdlib.h>
#define MAX 100

typedef char Elem;

typedef struct
{ Elem a[MAX];
int top;
}Sqstack;
Sqstack s1;

void init(Sqstack *s);
Elem pop(Sqstack *s);
void push(Sqstack *s,Elem e);

void init(Sqstack *s)
{ s->top=-1;
}
void push(Sqstack *s ,Elem e)
{ if(s->top==MAX-1)
printf("stack full");
else
{s->top++; s->a[s->top]=e;}
}
Elem pop(Sqstack *s)
{ Elem x;
if(s->top==-1) { printf("stack underflow"); x=-1; }
else{ x=s->a[s->top]; s->top--; return x;}
}

main()
{ init(s);

char ch; Elem e,x; int top; Sqstack s1;
do
{
ch=getchar();
switch(ch)
{ case '(': push(s,ch); break;
case '[': push(s,ch); break;
case '{': push(s,ch); break;
case ')': { if(s->a[top]=='(')
pop(s);
else
printf("no"); return 0;
}
case ']': { if(s->a[top]==']')
pop(s);
else
printf("no"); return 0;
}
case '}': { if(s->a[top]=='}')
pop(s);
else
printf("no") ;return 0;
}
}
}while(ch!='\n');
printf("YES");
}
展开
 我来答
yangxiaoluck
推荐于2016-05-01 · 超过12用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:38.4万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include"iostream.h"
#define MAX 100

typedef char Elem;

typedef struct
{ Elem a[MAX];
int top;
}Sqstack;
Sqstack s1;

void init(Sqstack *s);
Elem pop(Sqstack *s);
void push(Sqstack *s,Elem e);

void init(Sqstack *s)
{
s->top=-1;
}
void push(Sqstack *s ,Elem e)
{
if(s->top==MAX-1)
printf("stack full");
else
{
s->top++;
s->a[s->top]=e;
}
}
Elem pop(Sqstack *s)
{
Elem x;
if(s->top==-1)
{
printf("stack underflow");// x=-1;
}
else
{
x=s->a[s->top];
s->top--;
return x;
}
}

main()
{
Sqstack s;
init(&s);
int j;
char ch;
Elem e,x;
// int top;
Sqstack s1;
printf("请输入所有的符号,比如{{{【【【()】】】}}}是可以配对的,在比如【{】()}无法配对");
printf("括号序列如下:\n");
do
{
ch=getchar();
switch(ch)
{
case '(': push(&s,ch); break;
case '[': push(&s,ch); break;
case '{': push(&s,ch); break;
case ')': { if(s.a[s.top]=='(')
pop(&s);
// else
// printf("no"); //return 0;
}
case ']': { if(s.a[s.top]=='[')
pop(&s);
// else
// printf("no"); //return 0;
}
case '}': { if(s.a[s.top]=='{')
pop(&s);
// else
// printf("no") ;//return 0;
}
}
}while(ch!='\n');
// printf("YES");
if(s.top==-1)
printf("配对成功");
else
printf("不成功");
}
已经调试成功,我觉得你的算法好像有问题,我按照我自己的意思理解的,不晓得是不是对的...
百度网友cd3675a
2009-05-09 · TA获得超过335个赞
知道答主
回答量:191
采纳率:100%
帮助的人:173万
展开全部
你main函数的第1行S声明了吗?
错误不少呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式