You are on page 1of 5

Data Structures and Algorithms-SWE2001

LAB CAT-1
DATE: 05.04.2022
Register Number: 21MIS0332
Name: K. KAUSHIK
Aim: C program to check whether given expression
contains any duplicate parenthesis or not and Display
the duplicate parenthesis.
Algorithm:
1.CREATE A STACK AND SET TOP TO -1.
2.TAKE EXPRESSION AS INPUT FRON USER
3.CHECK THE CHARACTER OF EXPRESSION ONE
BY ONE BY FOR LOOP AND PUSH IF IT IS A
BRACKET.
4.CHECK FOR THE CORRESPONDING CLOSING
BRACKET.IF IT IS PRESENT,THEN PROCEED.
5. SET COUNT TO 0 AT BEGINNING.IF MORE THAN
ONE BRACKET IS PRESENT,INCREASE COUNT TO
1.
6.IF COUNT=1,THEN PRINT “ IT HAS A DUPLICATE
BRACKET”.
7.PRINT THE DUPLICATE BRACKET.

Program:
#include <stdio.h> /*KAUSHIK 21MIS0332*/
#include <string.h>

char stack[20];
int top = -1;

int isOpenB(char c){


if (c =='(' || c =='{' || c =='['){
return 1;
}
else return 0;
}

int isCloseB (char c){


if (c ==')' || c =='}' || c ==']'){
return 1;
}
else return 0;
}

char oppositeOf(char c){


switch(c){
case ')': return '(';
case '}': return '{';
case ']': return '[';
}
}
void push(char c){
top++;
stack[top] = c;
}

int main(){
int isOpenB(char);
int isCloseB(char);
char oppositeOf(char);
void push (char);

char expression[20];
printf("Enter the expression : ");
scanf("%s",expression);

for(int i=0; i < strlen(expression); i++){


if ( isOpenB(expression[i])){
push(expression[i]);
}

else if (isCloseB(expression[i])){
if (stack[top] == oppositeOf(expression[i])){
top--;
}
else {
printf("Mismatching '%c' and '%c'\n", stack[top], expression[i]);
break;
}
}

if (top == -1) printf("No duplicates\n");


else {
printf("IT HAS DUPLICATE BRACKET ,Duplicate brackets are :\n");
while(top != -1){
printf("%c\n", stack[top]);
top--;
}
}

return 0;
}

Screenshot of the output:

You might also like