我想问问运行时错误怎么解决,栈内存没问题啊

#include "stdio.h"
#include "stdlib.h"
typedef struct{
	int* base;
	int top;
	int size;
}Stack;
Stack S1;
void InitStack(Stack &S,int n);
void Push(Stack &S,char e);
char Pop(Stack &S);
bool IsEmpty(Stack S); 

int main()
{
	int n=0,n1=0;
	char a,b;
	char s[100]={'0'};
	char S[100]={'0'};
	a=getchar();
	while(a!='\n')
	{
		S[n1]=a;
		n1++;
		a=getchar();
	}
	for(int i=0;i<n1;i++)
	{
		if(S[i]=='('||S[i]=='{'||S[i]=='['||S[i]==')'||S[i]==']'||S[i]=='}')
		{
			s[n]=S[i];
			n++;
		}
	}
	InitStack(S1,n);
	if(s[0]==')'||s[0]==']'||s[0]=='}')
	{
		printf("%d",0);
		return 0;
	}
	for(int i=0;i<n;i++)
	{
		if(s[i]=='('||s[i]=='{'||s[i]=='[')
		{
			Push(S1,s[i]);
		}
		else if(s[i]==')'||s[i]==']'||s[i]=='}')
		{
			if(!IsEmpty(S1))
			{
				b=Pop(S1);	
				if((b=='('&&s[i]==')')||(b=='['&&s[i]==']')||(b=='{'&&s[i]=='}'))
				{}
				else
				{
					printf("%d",0);
					return 0;
				}
			}
			else
			{
				printf("%d",0);
				return 0;
			}
		}		
	}
	if(IsEmpty(S1))
		printf("%d",1);
	else
		printf("%d",0);
}

void InitStack(Stack &S,int n)
{
	S.base=(int*)malloc(n*sizeof(int));
	S.top=0;
	S.size=n;
}

void Push(Stack &S,char e)
{
	if(S.top>=S.size){
	S.base=(int *)realloc(S.base,(S.size+10)*sizeof(int));
	if(!S.base) exit(0);
	S.size+=10;
	}
	S.base[S.top++]=e;
}

char Pop(Stack &S)
{
	if(S.top!=0)
	{
		S.top--;
		char e=S.base[S.top];
		return e;
	}
	else
		return 0;
}

bool IsEmpty(Stack S)
{
	if(S.top==0)
		return true;
	else
		return false;
}


题目是

假设一算术表达式中包括三种括号:圆括号'('和')'; 方括号'[' 和']'; 花括号'{' 和'}',且三种括号可按任意次序嵌套使用,试编写程序判定输入的表达式所含的括号是否正确配对出现(已知表达式已存入数据元素为字符的顺序表中)。所有括号均为半角符号。

若匹配,则返回1,否则返回0。

自己测试都是对的,但是在系统上总是运行时错误

求求各位大佬帮忙看看,今天就要截止了

测试数据是什么呢?简单测试一下可以运行啊

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632