Update balanced parenthesis using stack in C

This commit is contained in:
Mayank Aggarwal 2018-03-11 22:48:53 +05:30 committed by GitHub
parent 63412ed20f
commit 6c3d167c6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,15 +8,15 @@ struct node
char data;
struct node* link;
};
int c=0;
struct node * head;
int c=0; // c used as counter to check if stack is empty or not
struct node * head; //declaring head pointer globally assigned to NULL
void push(char x)
void push(char x) //function for pushing
{
struct node*p,*temp;
struct node *p,*temp;
temp=(struct node*)malloc(sizeof(struct node));
temp->data=x;
if(head==NULL)
if(head==NULL) //will be execute only one time i.e, 1st time push is called
{
head=temp;
p=head;
@ -32,7 +32,7 @@ struct node*p,*temp;
}
}
char pop(void)
char pop(void) //function for pop
{
char x;
struct node*p=head;
@ -44,28 +44,28 @@ char pop(void)
}
int isBalanced(char *s) { //{[()]}
int isBalanced(char *s) {
int i=0;char x;
while(s[i]!='\0')
while(s[i]!='\0') //loop for covering entire string of brackets
{
if(s[i]=='{'||s[i]=='('||s[i]=='[')
if(s[i]=='{'||s[i]=='('||s[i]=='[') //if opening bracket then push
push(s[i]);
else
{
if(c<=0)
if(c<=0) //i.e, stack is empty as only opening brackets are added to stack
return 0;
x=pop();
if( x=='{'&&s[i]!='}')
x=pop();
if( x=='{'&&s[i]!='}')
return 0;
if(x=='['&&s[i]!=']')
return 0;
if(x=='('&&s[i]!=')')
return 0 ;
}i++;
}
if(c==0)
}
if(c==0) //at end if stack is empy which means whole process has been performed correctly so retuen 1
return 1;
else
return 0;