NAME: ODEKUNLE OLUWATOBI ALAO MATRIC NO: 200868 COURSE: DATA STRUCTURES
IMPLEMENTATION OF BRACKET MATCHING ALGORITHM USING STACK IN JAVA.
import [Link].*;
public class BracketMatching {
static String input;
static String output = "";
public BracketMatching(String input){
[Link] = input;
}
public static boolean checkBracketMatched(char leftBracket, char rightBracket){
boolean checkBracket = false;
if( (leftBracket == '(' && rightBracket == ')') || (leftBracket == '[' && rightBracket == ']') || (leftBracket ==
'{' && rightBracket == '}') ){
return true;
}
return checkBracket;
}
public static boolean checkLeftBracket(char current){
boolean check = false;
if( current == '{' || current == '[' || current == '(' ){
check = true;
}
return check;
}
public static boolean bracketMatched(){
int error = 0;
int currentPosition;
boolean check = false;
Stack <Character> stack = new Stack<Character>();
int last_position = [Link]();
for(int position = 0; position < [Link](); position++){
char currentChar = [Link](position);
if( checkLeftBracket(currentChar) ){
[Link](currentChar);
if( position == last_position-1 ){
output += "End of the string\n";
error += 1;
}
}
else{
if( [Link]() ){
output += "Error: no matching left for "+ currentChar + " at position "+(position+1) + ", the stack is
empty\n";
error += 1;
}
else{
char topStack = [Link]();
if( checkBracketMatched(topStack,currentChar) ){
currentPosition = [Link]();
[Link]();
output += "Bracket "+topStack+" at position "+(position) + " is matched with Bracket
"+currentChar+" at position "+(position+1)+"\n";
}
else{
output += "Error: no matching left bracket for "+currentChar + " at position "+(position+1)+"\n";
error += 1;
}
}
}
}
if([Link]()){
check = true;
if(error == 0){
output += "Brackets successfully matched";
}
}else{
output += "Error: there are "+[Link]()+" left brackets in the stack without right brackets";
}
return check;
}
public static void main(String[] args) {
Scanner console = new Scanner([Link]);
[Link]( " Enter any expression: ({[ ])} " );
String input = [Link]();
BracketMatching match = new BracketMatching(input);
if(bracketMatched()){
[Link]([Link]);
}
else{
[Link]([Link] +"\nBracket not matched");
}
}
}
OUTPUT: