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:

filter_none

edit
close

play_arrow

link
brightness_4
code

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"

chevron_right


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.



My Personal Notes arrow_drop_up