Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program for checking balance of parenthesis in C using stack but it is not working as expected plz help me with it. Thanks
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- struct node{
- char data;
- struct node *next;
- };
- struct node *top=NULL; //top stores address of top element of stack
- void push(char data) //inserting element
- {
- struct node *temp = (node *)malloc(sizeof(struct node));
- temp->data=data;
- temp->next=NULL;
- if(top==NULL)
- {
- top=temp;
- return;
- }
- temp->next=top;
- top=temp;
- }
- void pop() //removing element
- {
- struct node *temp=top;
- if(top==NULL)
- {
- printf("No element to delete");
- return;
- }
- top=top->next;
- free(temp);
- }
- char Top() //fn tht return top element of stack
- {
- return top->data;
- }
- int isEmpty()
- {
- if( top!=NULL)
- {
- return 1;
- }
- else
- return 0;
- }
- int ArePair(char opening,char closing)
- {
- if(opening == '(' && closing == ')')
- return 1;
- else if(opening == '{' && closing == '}')
- return 1;
- else if(opening == '[' && closing == ']')
- return 1;
- return 0;
- }
- int Arebalanced(char exp[])
- {
- int i;
- for(i=0;i<strlen(exp);i++)
- {
- if(exp[i] == '(' || exp[i] == '{' || exp[i] == '[')
- push(exp[i]);
- else if(exp[i] == ')' || exp[i] == '}' || exp[i] == ']')
- {
- if(isEmpty() || !ArePair(Top(),exp[i]))
- return 0;
- else
- pop();
- }
- }
- return isEmpty() ? 1:0;
- }
- int main()
- {
- int i;
- char a[50];
- printf("Enter expession: ");
- gets(a);
- if(Arebalanced(a))
- {
- printf("balanced \n");
- }
- else
- printf("not balanced\n");
- }
Add Comment
Please, Sign In to add comment