小菜鸟刚学数据结构,写了一段关于括号匹配的代码,有很多错误,希望大牛能帮我改正,顺便教导哈我,谢谢

代码#include<stdio.h>
#define maxsize 201;
typedef int datatype;
typedef struct /*定义一个栈*/
{
datatype stack[maxsize];
int top;
}seqstack;
seqstack *s;
seqstack *Initstack() /*构建一个空栈*/
{
seqstack *s;
s=(seqstack * )malloc(sizeof(seqstack));
}
datatype Gettop(seqstack * s)
{
if(s->top==-1)
return 0;
else
return s->stack[s->top];
}
seqstack *push(seqstack * s,datatype x)
{
if(s->top==maxsize-1)
return NULL;
else
s->top++;
s->stack[s->top]=x;
return s;
}
datatype pop(seqstack * s)
{
if(s->top==-1)
return 0;
s->top--;
return s->stack[s->top+1];
}
int stackempty(seqstack *s)
{
if(s->top==-1)
return 1;
else
return 0;
}
int main()
{
int ri,repeat,i,j,n,m,s,k;
char ch[201];
match(char ch[]);
scanf("%d",&repeat);
for(ri=0;ri<repeat;ri++){
scanf("%d",&n);
scanf("%s",ch);
k=match(char ch[]);
if(k==1)
printf("no\n");
else
printf("yes\n");
}
return 0;
}
int match(char ch[]){
int i=0;
seqstack *s;
s=Initstack();
while(ch[i])
{
switch(ch[i])
{
case')':push(s,ch[i]);break;
case'(':if(!stackempty(s)&&Gettop(s)==')')
{
pop(s);
break;
}
}
i++;
}
return (stackempty(s));
}

错误已经注释
#include "stdafx.h"
#include<stdio.h>
#include<malloc.h>
#define maxsize 201//原来有分号应去掉
typedef int datatype;
typedef struct /*定义一个栈*/
{
datatype stack[maxsize];
int top;
}seqstack;
seqstack *s;
seqstack *Initstack() /*构建一个空栈*/
{
seqstack *s;
s=(seqstack * )malloc(sizeof(seqstack));
return s;//应返栈
}
datatype Gettop(seqstack * s)
{
if(s->top==-1)
return 0;
else
return s->stack[s->top];
}
seqstack *push(seqstack * s,datatype x)
{
if(s->top==maxsize-1)
return NULL;
else
s->top++;
s->stack[s->top]=x;
return s;
}
datatype pop(seqstack * s)
{
if(s->top==-1)
return 0;
s->top--;
return s->stack[s->top+1];
}
int stackempty(seqstack *s)
{
if(s->top==-1)
return 1;
else
return 0;
}
int main()
{
int ri,repeat,i,j,n,m,s,k;
char ch[201];
int match(char ch[]);
scanf("%d",&repeat);
for(ri=0;ri<repeat;ri++){
scanf("%d",&n);
scanf("%s",ch);
k=match(ch);//这里调用写法有错误
if(k==1)
printf("no\n");
else
printf("yes\n");
}
return 0;
}
int match(char ch[]){
int i=0;
seqstack *s;
s=Initstack();
while(ch[i])
{
switch(ch[i])
{
case')':push(s,ch[i]);break;
case'(':if(!stackempty(s)&&Gettop(s)==')')
{
pop(s);
break;
}
}
i++;
}
return (stackempty(s));
}

经改后,程序能运行,但结果有问题
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜