#include<stdio.h>
#include<stdlib.h>
#define bool int
/* structure of a stack node */
struct sNode
{
char data;
struct sNode *next;
};
/* Function to push an item to stack*/
void push(struct sNode** top_ref, int new_data);
/* Function to pop an item from stack*/
int pop(struct sNode** top_ref);
/* Returns 1 if character1 and character2 are matching left
and right Parenthesis */
bool isMatchingPair(char character1, char character2)
{
if (character1 == '(' && character2 == ')')
return 1;
else if (character1 == '{' && character2 == '}')
return 1;
else if (character1 == '[' && character2 == ']')
return 1;
else
return 0;
}
/*Return 1 if expression has balanced Parenthesis */
bool areParenthesisBalanced(char exp[])
{
int i = 0;
/* Declare an empty character stack */
struct sNode *stack = NULL;
/* Traverse the given expression to check matching parenthesis */
while (exp[i])
{
/*If the exp[i] is a starting parenthesis then push it*/
if (exp[i] == '{' || exp[i] == '(' || exp[i] == '[')
push(&stack, exp[i]);
/* If exp[i] is a ending parenthesis then pop from stack and
check if the popped parenthesis is a matching pair*/
if (exp[i] == '}' || exp[i] == ')' || exp[i] == ']')
{
/*If we see an ending parenthesis without a pair then return false*/
if (stack == NULL)
return 0;
/* Pop the top element from stack, if it is not a pair
parenthesis of character then there is a mismatch.
This happens for expressions like {(}) */
else if ( !isMatchingPair(pop(&stack), exp[i]) )
return 0;
}
i++;
}
/* If there is something left in expression then there is a starting
parenthesis without a closing parenthesis */
if (stack == NULL)
return 1; /*balanced*/
else
return 0; /*not balanced*/
}
/* UTILITY FUNCTIONS */
/*driver program to test above functions*/
int main()
{
char exp[100] = "{()}[]";
if (areParenthesisBalanced(exp))
printf("\n Balanced ");
else
printf("\n Not Balanced ");
return 0;
}
/* Function to push an item to stack*/
void push(struct sNode** top_ref, int new_data)
{
/* allocate node */
struct sNode* new_node =
(struct sNode*) malloc(sizeof(struct sNode));
if (new_node == NULL)
{
printf("Stack overflow \n");
getchar();
exit(0);
}
/* put in the data */
new_node->data = new_data;
/* link the old list off the new node */
new_node->next = (*top_ref);
/* move the head to point to the new node */
(*top_ref) = new_node;
}
/* Function to pop an item from stack*/
int pop(struct sNode** top_ref)
{
char res;
struct sNode *top;
/*If stack is empty then error */
if (*top_ref == NULL)
{
printf("Stack overflow \n");
getchar();
exit(0);
}
else
{
top = *top_ref;
res = top->data;
*top_ref = top->next;
free(top);
return res;
}
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNkZWZpbmUgYm9vbCBpbnQKCi8qIHN0cnVjdHVyZSBvZiBhIHN0YWNrIG5vZGUgKi8Kc3RydWN0IHNOb2RlCnsKY2hhciBkYXRhOwpzdHJ1Y3Qgc05vZGUgKm5leHQ7Cn07CgovKiBGdW5jdGlvbiB0byBwdXNoIGFuIGl0ZW0gdG8gc3RhY2sqLwp2b2lkIHB1c2goc3RydWN0IHNOb2RlKiogdG9wX3JlZiwgaW50IG5ld19kYXRhKTsKCi8qIEZ1bmN0aW9uIHRvIHBvcCBhbiBpdGVtIGZyb20gc3RhY2sqLwppbnQgcG9wKHN0cnVjdCBzTm9kZSoqIHRvcF9yZWYpOwoKLyogUmV0dXJucyAxIGlmIGNoYXJhY3RlcjEgYW5kIGNoYXJhY3RlcjIgYXJlIG1hdGNoaW5nIGxlZnQKYW5kIHJpZ2h0IFBhcmVudGhlc2lzICovCmJvb2wgaXNNYXRjaGluZ1BhaXIoY2hhciBjaGFyYWN0ZXIxLCBjaGFyIGNoYXJhY3RlcjIpCnsKaWYgKGNoYXJhY3RlcjEgPT0gJygnICYmIGNoYXJhY3RlcjIgPT0gJyknKQoJcmV0dXJuIDE7CmVsc2UgaWYgKGNoYXJhY3RlcjEgPT0gJ3snICYmIGNoYXJhY3RlcjIgPT0gJ30nKQoJcmV0dXJuIDE7CmVsc2UgaWYgKGNoYXJhY3RlcjEgPT0gJ1snICYmIGNoYXJhY3RlcjIgPT0gJ10nKQoJcmV0dXJuIDE7CmVsc2UKCXJldHVybiAwOwp9CgovKlJldHVybiAxIGlmIGV4cHJlc3Npb24gaGFzIGJhbGFuY2VkIFBhcmVudGhlc2lzICovCmJvb2wgYXJlUGFyZW50aGVzaXNCYWxhbmNlZChjaGFyIGV4cFtdKQp7CmludCBpID0gMDsKCi8qIERlY2xhcmUgYW4gZW1wdHkgY2hhcmFjdGVyIHN0YWNrICovCnN0cnVjdCBzTm9kZSAqc3RhY2sgPSBOVUxMOwoKLyogVHJhdmVyc2UgdGhlIGdpdmVuIGV4cHJlc3Npb24gdG8gY2hlY2sgbWF0Y2hpbmcgcGFyZW50aGVzaXMgKi8Kd2hpbGUgKGV4cFtpXSkKewoJLypJZiB0aGUgZXhwW2ldIGlzIGEgc3RhcnRpbmcgcGFyZW50aGVzaXMgdGhlbiBwdXNoIGl0Ki8KCWlmIChleHBbaV0gPT0gJ3snIHx8IGV4cFtpXSA9PSAnKCcgfHwgZXhwW2ldID09ICdbJykKCQlwdXNoKCZzdGFjaywgZXhwW2ldKTsKCgkvKiBJZiBleHBbaV0gaXMgYSBlbmRpbmcgcGFyZW50aGVzaXMgdGhlbiBwb3AgZnJvbSBzdGFjayBhbmQgCgkJY2hlY2sgaWYgdGhlIHBvcHBlZCBwYXJlbnRoZXNpcyBpcyBhIG1hdGNoaW5nIHBhaXIqLwoJaWYgKGV4cFtpXSA9PSAnfScgfHwgZXhwW2ldID09ICcpJyB8fCBleHBbaV0gPT0gJ10nKQoJewoJCQkKCQkvKklmIHdlIHNlZSBhbiBlbmRpbmcgcGFyZW50aGVzaXMgd2l0aG91dCBhIHBhaXIgdGhlbiByZXR1cm4gZmFsc2UqLwoJCWlmIChzdGFjayA9PSBOVUxMKQoJCXJldHVybiAwOyAKCgkJLyogUG9wIHRoZSB0b3AgZWxlbWVudCBmcm9tIHN0YWNrLCBpZiBpdCBpcyBub3QgYSBwYWlyIAoJCQlwYXJlbnRoZXNpcyBvZiBjaGFyYWN0ZXIgdGhlbiB0aGVyZSBpcyBhIG1pc21hdGNoLgoJCQlUaGlzIGhhcHBlbnMgZm9yIGV4cHJlc3Npb25zIGxpa2Ugeyh9KSAqLwoJCWVsc2UgaWYgKCAhaXNNYXRjaGluZ1BhaXIocG9wKCZzdGFjayksIGV4cFtpXSkgKQoJCXJldHVybiAwOwoJfQoJaSsrOwp9CgkKLyogSWYgdGhlcmUgaXMgc29tZXRoaW5nIGxlZnQgaW4gZXhwcmVzc2lvbiB0aGVuIHRoZXJlIGlzIGEgc3RhcnRpbmcKCXBhcmVudGhlc2lzIHdpdGhvdXQgYSBjbG9zaW5nIHBhcmVudGhlc2lzICovCmlmIChzdGFjayA9PSBOVUxMKQoJcmV0dXJuIDE7IC8qYmFsYW5jZWQqLwplbHNlCglyZXR1cm4gMDsgLypub3QgYmFsYW5jZWQqLwp9IAoKLyogVVRJTElUWSBGVU5DVElPTlMgKi8KLypkcml2ZXIgcHJvZ3JhbSB0byB0ZXN0IGFib3ZlIGZ1bmN0aW9ucyovCmludCBtYWluKCkKewpjaGFyIGV4cFsxMDBdID0gInsoKX1bXSI7CmlmIChhcmVQYXJlbnRoZXNpc0JhbGFuY2VkKGV4cCkpCglwcmludGYoIlxuIEJhbGFuY2VkICIpOwplbHNlCglwcmludGYoIlxuIE5vdCBCYWxhbmNlZCAiKTsgCnJldHVybiAwOwp9IAoKLyogRnVuY3Rpb24gdG8gcHVzaCBhbiBpdGVtIHRvIHN0YWNrKi8Kdm9pZCBwdXNoKHN0cnVjdCBzTm9kZSoqIHRvcF9yZWYsIGludCBuZXdfZGF0YSkKewovKiBhbGxvY2F0ZSBub2RlICovCnN0cnVjdCBzTm9kZSogbmV3X25vZGUgPQoJCQkoc3RydWN0IHNOb2RlKikgbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc05vZGUpKTsKCmlmIChuZXdfbm9kZSA9PSBOVUxMKQp7CglwcmludGYoIlN0YWNrIG92ZXJmbG93IFxuIik7CglnZXRjaGFyKCk7CglleGl0KDApOwp9CQkgCgovKiBwdXQgaW4gdGhlIGRhdGEgKi8KbmV3X25vZGUtPmRhdGEgPSBuZXdfZGF0YTsKCi8qIGxpbmsgdGhlIG9sZCBsaXN0IG9mZiB0aGUgbmV3IG5vZGUgKi8KbmV3X25vZGUtPm5leHQgPSAoKnRvcF9yZWYpOyAKCi8qIG1vdmUgdGhlIGhlYWQgdG8gcG9pbnQgdG8gdGhlIG5ldyBub2RlICovCigqdG9wX3JlZikgPSBuZXdfbm9kZTsKfQoKLyogRnVuY3Rpb24gdG8gcG9wIGFuIGl0ZW0gZnJvbSBzdGFjayovCmludCBwb3Aoc3RydWN0IHNOb2RlKiogdG9wX3JlZikKewpjaGFyIHJlczsKc3RydWN0IHNOb2RlICp0b3A7CgovKklmIHN0YWNrIGlzIGVtcHR5IHRoZW4gZXJyb3IgKi8KaWYgKCp0b3BfcmVmID09IE5VTEwpCnsKCXByaW50ZigiU3RhY2sgb3ZlcmZsb3cgXG4iKTsKCWdldGNoYXIoKTsKCWV4aXQoMCk7Cn0KZWxzZQp7Cgl0b3AgPSAqdG9wX3JlZjsKCXJlcyA9IHRvcC0+ZGF0YTsKCSp0b3BfcmVmID0gdG9wLT5uZXh0OwoJZnJlZSh0b3ApOwoJcmV0dXJuIHJlczsKfQp9Cg==
Main.java:1: error: illegal character: '#'
#include<stdio.h>
^
Main.java:1: error: class, interface, or enum expected
#include<stdio.h>
^
Main.java:2: error: illegal character: '#'
#include<stdlib.h>
^
Main.java:3: error: illegal character: '#'
#define bool int
^
Main.java:9: error: class, interface, or enum expected
struct sNode *next;
^
Main.java:10: error: class, interface, or enum expected
};
^
Main.java:13: error: class, interface, or enum expected
void push(struct sNode** top_ref, int new_data);
^
Main.java:16: error: class, interface, or enum expected
int pop(struct sNode** top_ref);
^
Main.java:20: error: class, interface, or enum expected
bool isMatchingPair(char character1, char character2)
^
Main.java:24: error: class, interface, or enum expected
else if (character1 == '{' && character2 == '}')
^
Main.java:26: error: class, interface, or enum expected
else if (character1 == '[' && character2 == ']')
^
Main.java:28: error: class, interface, or enum expected
else
^
Main.java:30: error: class, interface, or enum expected
}
^
Main.java:38: error: class, interface, or enum expected
struct sNode *stack = NULL;
^
Main.java:41: error: class, interface, or enum expected
while (exp[i])
^
Main.java:49: error: class, interface, or enum expected
if (exp[i] == '}' || exp[i] == ')' || exp[i] == ']')
^
Main.java:59: error: class, interface, or enum expected
else if ( !isMatchingPair(pop(&stack), exp[i]) )
^
Main.java:61: error: class, interface, or enum expected
}
^
Main.java:63: error: class, interface, or enum expected
}
^
Main.java:69: error: class, interface, or enum expected
else
^
Main.java:71: error: class, interface, or enum expected
}
^
Main.java:78: error: class, interface, or enum expected
if (areParenthesisBalanced(exp))
^
Main.java:80: error: class, interface, or enum expected
else
^
Main.java:82: error: class, interface, or enum expected
return 0;
^
Main.java:83: error: class, interface, or enum expected
}
^
Main.java:92: error: class, interface, or enum expected
if (new_node == NULL)
^
Main.java:95: error: class, interface, or enum expected
getchar();
^
Main.java:96: error: class, interface, or enum expected
exit(0);
^
Main.java:97: error: class, interface, or enum expected
}
^
Main.java:103: error: class, interface, or enum expected
new_node->next = (*top_ref);
^
Main.java:106: error: class, interface, or enum expected
(*top_ref) = new_node;
^
Main.java:107: error: class, interface, or enum expected
}
^
Main.java:113: error: class, interface, or enum expected
struct sNode *top;
^
Main.java:116: error: class, interface, or enum expected
if (*top_ref == NULL)
^
Main.java:119: error: class, interface, or enum expected
getchar();
^
Main.java:120: error: class, interface, or enum expected
exit(0);
^
Main.java:121: error: class, interface, or enum expected
}
^
Main.java:125: error: class, interface, or enum expected
res = top->data;
^
Main.java:126: error: class, interface, or enum expected
*top_ref = top->next;
^
Main.java:127: error: class, interface, or enum expected
free(top);
^
Main.java:128: error: class, interface, or enum expected
return res;
^
Main.java:129: error: class, interface, or enum expected
}
^
42 errors