La mejor estructura de datos para verificar si una expresión aritmética tiene paréntesis balanceados es a (GATE CS 2004)
(A) cola
(B) pila
(C) árbol
(D) lista
Respuesta: (B)
Explicación: Hay tres tipos de paréntesis [ ] { }(). A continuación se muestra un segmento de código arbitrario c que tiene paréntesis de los tres tipos.
void func(int c, int a[]) { return ((c +2) + arr[(c-2)]) ; }
Stack es una opción sencilla para comprobar si los paréntesis izquierdo y derecho están equilibrados. Aquí hay un algoritmo para hacer lo mismo.
/*Return 1 if expression has balanced parentheses */ bool areParenthesesBalanced(expression ) { for each character in expression { if(character == ’(’ || character == ’{’ || character == ’[’) push(stack, character); if(character == ’)’ || character == ’}’ || character == ’]’) { if(isEmpty(stack)) return 0; /*We are seeing a right parenthesis without a left pair*/ /* Pop the top element from stack, if it is not a pair bracket of character then there is a mismatch. This will happen for expressions like {(}) */ else if (! isMatchingPair(pop(stack), character) ) return 0; } } if(isEmpty(stack)) return 1; /*balanced*/ else return 0; /*not balanced*/ } /* End of function to check parentheses */ /* Returns 1 if character1 and character2 are matching left and right parentheses */ bool isMatchingPair(character1, character2) { if(character1 == ‘(‘ && character2 == ‘)’) return 1; else If(character1 == ‘{‘ && character2 == ‘}’) return 1; else If(character1 == ‘[‘ && character2 == ‘]’) return 1; else return 0; }
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA