#include<stdio.h> #include<conio.h> #define TRUE 1 #define FALSE 0 struct stack { int top; char paren[20]; }; int main () { struct stack s; char instr[20]; int valid=TRUE,i=0; s.top=-1; clrscr(); printf("Enter an arithmetic expression: "); while((instr[i]=getchar())!='\n') { if(instr[i]=='(') push(&s,instr[i]); if(instr[i]==')') { if(empty(&s)) { valid =FALSE; break; } else { pop(&s); } i++; } } if(!empty(&s)) valid=FALSE; if(valid) printf("The given expression is valid!"); else printf("The given Expression is NOT valid"); getch(); return 0; } push(ps,n) struct stack *ps; int n; { ps->top++; ps->paren[ps->top]=n; } pop(ps) struct stack *ps; { ps->top--; } empty(ps) struct stack *ps; { if(ps->top==-1) return TRUE; else return FALSE; }