Update Paranthesis Matching.cpp

This commit is contained in:
Ashwek Swamy 2018-11-13 22:32:40 +05:30 committed by GitHub
parent 16e1bcdb52
commit ff41e4a60c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,52 +1,63 @@
#include<iostream>
#include<stdlib.h>
#include<string>
#include<stdio.h>
using namespace std;
const int MAX = 100;
#define MAX 100
// -------------- stack --------------
char stack[MAX];
int top=0;
int top = -1;
void push(char ch)
{
stack[top++]=ch;
void push(char ch){
stack[ ++top ] = ch;
}
char pop()
{
return stack[--top];
char pop(){
return stack[ top-- ];
}
// -------------- end stack -----------
int main()
{
char opening(char ch){
switch(ch){
case '}':
return '{';
case ']':
return '[';
case ')':
return '(';
case '>':
return '<';
}
}
int main(){
string exp;
int valid = 1, i = 0;
cout<<"Enter The Expression : ";
cin >> exp;
for (int i = 0; i < exp.length(); i++)
{
if (exp[i]=='(' || exp[i]=='{' || exp[i]=='[' || exp[i]=='<')
{
while (valid == 1 && i < exp.length()){
if (exp[i] == '(' || exp[i] == '{' || exp[i] == '[' || exp[i] == '<'){
push(exp[i]);
}
else if (exp[i]==')' || exp[i]=='}' || exp[i]==']' || exp[i]=='>')
{
pop();
else if (top >= 0 && stack[top] == opening(exp[i])){
pop();
}
else{
valid = 0;
}
i++;
}
// makes sure the stack is empty after processsing (above)
if(top==0)
{
cout<<"Correct Expression";
if (valid == 1 && top == -1){
cout<<"\nCorrect Expression";
}
else
{
else{
cout<<"\nWrong Expression";
}