67 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdio.h>
 | |
| #include <string.h>
 | |
| 
 | |
| #define MAX_SIZE 100
 | |
| 
 | |
| int top = -1;
 | |
| char stack[MAX_SIZE];
 | |
| 
 | |
| void push(char value) {
 | |
|     if (top == MAX_SIZE - 1) {
 | |
|         printf("Stack is full\n");
 | |
|         return;
 | |
|     }
 | |
|     stack[++top] = value;
 | |
| }
 | |
| 
 | |
| char pop() {
 | |
|     if (top == -1) {
 | |
|         printf("Stack is empty\n");
 | |
|         return '\0';
 | |
|     }
 | |
|     return stack[top--];
 | |
| }
 | |
| 
 | |
| int isMatching(char c1, char c2) {
 | |
|     if (c1 == '(' && c2 == ')')
 | |
|         return 1;
 | |
|     if (c1 == '[' && c2 == ']')
 | |
|         return 1;
 | |
|     if (c1 == '{' && c2 == '}')
 | |
|         return 1;
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| int isParenthesisBalanced(char* expression) {
 | |
|     for (int i = 0; i < strlen(expression); i++) {
 | |
|         char c = expression[i];
 | |
| 
 | |
|         if (c == '(' || c == '[' || c == '{')
 | |
|             push(c);
 | |
| 
 | |
|         if (c == ')' || c == ']' || c == '}') {
 | |
|             char pop_value = pop();
 | |
| 
 | |
|             if (!isMatching(pop_value, c))
 | |
|                 return 0;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     if (top == -1)
 | |
|         return 1;
 | |
|     else
 | |
|         return 0;
 | |
| }
 | |
| 
 | |
| int main() {
 | |
|     char expression[MAX_SIZE];
 | |
|     printf("Enter an expression: ");
 | |
|     scanf("%s", expression);
 | |
| 
 | |
|     if (isParenthesisBalanced(expression))
 | |
|         printf("Expression is balanced\n");
 | |
|     else
 | |
|         printf("Expression is not balanced\n");
 | |
| 
 | |
|     return 0;
 | |
| }
 | 
