#include <stdio.h>
#include <stdlib.h>
const int MAXSIZE=100;
struct Stack
    {
        char data[MAXSIZE];
        int size;
    }
char Pop (Stack &S)
    {
        if (S.size==0)
            {
                printf ("Stack empty");
                return char(255);
            }
        S.size--;
        return S.data[S.size];
    }

void Push (Stack &S, char x)
    {
        if (S.size==MAXSIZE)
            {
                printf ("Stack>>>");
                return;
            }
        S.data[S.size]=x;
        S.size++;
    }
int main(void)
    {
        char br1[3] = { '(', '[', '{' };
        char br2[3] = { ')', ']', '}' };
        char s[80], upper;
        int i, k, OK;
        Stack S;
        printf("Enter stack: ");
        gets(s);
        S.size=0;
        OK=1;
    for (i=0; OK&&(s[i]!='\0'); i++)
        for (k=0; k<3; k++)
            {
                if (s[i]==br1[k])
                    {
                        Push (S, s[i]);
                        break;
                    }
                if (s[i]==br2[k])
                    {
                        upper=Pop(S);
                            if (upper!=br1[k])
                                OK=0;
                            break;
                    }
            }
    if (OK&&(S.size == 0))
        printf("\nRight\n");
    else printf("\nWrong\n");
}
