Write a program to check nesting of parentheses using a stack.
#include <stdio.h>
#include <conio. h>
#include <string.h>
#define MAX 10
int top "' -1;
int stk[MAX];
void push( char);
char pop();
void main()
{
char exp[MAX), temp;
int i, flag:l;
clrscr();
printf( "Enter an expression : ");
gets(exp);
for(i=O; i< strlen( exp); i++)
{
if(exp[i]••'(' 11 exp[i]••'{' 11 exp[i]••'[')
push(exp[i]);
if(exp[i]••')' 11 exp[i]••')' 11 exp[i]••'l')
if(top •• -1)
flag:O;
else
{
temp::pop();
if(exp[i]••')' && (temp••'{' II temp••'('))
flag:O;
if(exp[i]••')' && (temp••'(' II temp••'['))
flag:O;
if(exp[i]••'J' && (temp••'(' II temp••'{'))
flag:O;
)
if(top>•O)
flag:O;
if(flag••l)
printf("\n Valid expression");
else
printf("\n Invalid expression");
)
void push{char c)
{
if(top •• (MAX-1))
printf ( "Stack Overflow\n");
else
{
top,,,top+l;
stk[top] • c;
)
char pop()
{
if(top •• -1)
printf (" \n Stack Underflow");
else
return(stk[top--]);
Output
Enter an expression : (A+ (B - C))
Valid Expression