#include
#include
#ifndef Stack_h
#define Stack_h
#define TRUE 1
#define FALSE 0
#define N 100
typedef char T;
struct stack{
T array[N];
int top;
}s;
Stack(){
s.top=-1;
}
int isEmpty(){
if(s.top==-1)return TRUE;
else return FALSE;
}
int Full(){
if(s.top==N-1)return TRUE;
else return FALSE;
}
void Push(T n){
if(!Full())
{
s.top++;
s.array[s.top]=n;
}
else{
printf("Õ»Âú\n");
}
}
T Pop(){
if(!isEmpty()){
return s.array[s.top--]; //先返回栈顶元素,再将栈顶减1
}
else{
printf("Õ»¿Õ\n");
}
}
T Top(){
if(!isEmpty()){
return s.array[s.top];
}
else{
printf("Õ»¿Õ\n");
}
}
#endif
int main(){
char a[N];
char B;
int i=0;
gets(a);
int length=strlen(a); //你把这一行放在gets(a)前面怎么可能求出a的正确长度呢?
Stack();
for(i=0;i
{
if(a[i]=='('||a[i]=='['||a[i]=='{')
{
Push(a[i]); //Push(a[i]),不是Push(*p),变量p根本不需要
}
else if(a[i]==')'||a[i]==']'||a[i]=='}')
{
if(isEmpty())printf("Õ»¿Õ\n");
else{
B=Pop();
if(a[i]==')'&&B=='('){
continue;
}
else if(a[i]==']'&&B=='['){
continue;
}
else if(a[i]=='}'&&B=='{'){
continue;
}
else Push(B);
}
}
}
if(isEmpty())printf("Æ¥Åä³É¹¦\n");
else{
printf("Æ¥Åäʧ°Ü\n");
}
return 0;
}
追问
谢谢(ฅ>ω
温馨提示:答案为网友推荐,仅供参考