Data Structures | Stack | Question 5
Following is an incorrect pseudocode for the algorithm which is supposed to determine whether a sequence of parentheses is balanced:
declare a character stack while ( more input is available) { read a character if ( the character is a '(' ) push it on the stack else if ( the character is a ')' and the stack is not empty ) pop a character off the stack else print "unbalanced" and exit } print "balanced" |
Which of these unbalanced sequences does the above code think is balanced?
Source: http://www.cs.colorado.edu/~main/questions/chap07q.html
(A) ((())
(B) ())(()
(C) (()()))
(D) (()))()
Answer: (A)
Explanation: At the end of while loop, we must check whether the stack is empty or not. For input ((()), the stack doesn’t remain empty after the loop. See https://www.geeksforgeeks.org/check-for-balanced-parentheses-in-an-expression/ for details.