#include<stdio.h>
struct stack
{
char arr[100];
int top;
};
typedef struct stack stack;
stack push(stack s,char ch)
{
s.arr[++(s.top)]=ch;
return s;
}
char pop(stack *s)
{
return (*s).arr[((*s).top)--];
}
int compare(char ch1,char ch2)
{
if(ch1=='{' && ch2=='}')
return 1;
else
if(ch1=='(' && ch2==')')
return 1;
else
if(ch1=='[' && ch2==']')
return 1;
else
return 0;
}
int main()
{
char exp[100];
int i,flag=1;
stack s;
s.top=-1;
printf("Enter any expresion :");
scanf("%s",&exp);
for(i=0;exp[i];i++)
{
if(exp[i]=='{' || exp[i]=='(' || exp[i]=='[')
{
s=push(s,exp[i]);
}
else
if(exp[i]=='}' || exp[i]==')' || exp[i]== ']')
{
if(s.top==-1)
{
flag=0;
break;
}
else
if(!compare(pop(&s),exp[i]))
{
flag=0;
break;
}
}
}
if(s.top!=-1)
{
flag=0;
}
if(flag)
printf("\nBalanced Parentheses");
else
printf("\nUnbalanced Parentheses");
return 0;
}
Example :Input : [()]{}{[()()]()}
Output : Balanced Parentheses
Input : [(])
Output : Unbalanced Parentheses
No comments:
Post a Comment