王道数据结构p96——1
代码
#include<stdio.h>
#include<stdlib.h>
typedef struct stack{
char data[10];
int top;
}stack;
bool check(stack &s,char str[]);
void Ininstack(stack &s);
bool stackempty(stack s);
void push(stack &s,char c);
void pop(stack &s,char &c);
int main(){
stack s;
Ininstack(s);
char str[20] = "[]({()})";
for(int i=0;str[i]!='\0';i++){
push(s,str[i]);
}
printf("%d",check(s,str));
return 0;
}
bool check(stack &s,char str[]){
char c;
for(int i=0;str[i]!='\0';i++){
if(str[i] == '[' || str[i] == '{' || str[i] == '('){
push(s,str[i]);
}
else{
if(str[i] == '}' || str[i] == ']' || str[i] == ')'){
pop(s,c);
switch(str[i]){
case '}' :
if(c == '{'){
break;
}
else return false;
case ']' :
if(c == '['){
break;
}
else return false;
case ')' :
if(c == '('){
break;
}
else return false;
}
}
else
return false;
}
}
return true;
}
void Ininstack(stack &s){
s.top = -1;
}
bool stackempty(stack s){
if(s.top == -1) return true;
else return false;
}
void push(stack &s,char c){
s.top++;
s.data[s.top] = c;
}
void pop(stack &s,char &c){
c = s.data[s.top];
s.top--;
}