1. Show the stack states (contents) as you trace the algorithm checkBalance, as discussed in class, for each of the following infix expressions: (a) a { b [ c * (d + e)]-f} (b) { a ( b * c ) / [ d + e]/f)-g} (c) a { b [ c-d]e])f

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question
**Algorithm: checkBalance(expression)**

This algorithm returns true if parentheses, brackets, and braces in an algebraic expression are paired correctly.

1. **Initialize:**

   ``` 
   isBalanced = true 
   ```

   Start with the assumption that everything is balanced, with nothing processed yet.

2. **Read the Expression:**

   ```
   while ((isBalanced == true) and not end of expression) {
      nextCharacter = read next character in expression
   ```

   Continue reading until the end of the expression or until it's determined that the expression is not balanced.

3. **Check Character Type:**

   ``` 
   switch (nextCharacter) {
   ```

   - **Open Delimiters:**

     ```
     case '(': case '[': case '{': 
        Push nextCharacter onto stack
        break
     ```

     For any open parenthesis, brace, or bracket, push the character onto a stack.

   - **Closed Delimiters:**

     ``` 
     case ')': case ']': case '}':
        if (stack is empty)
           isBalanced = false
        else {
           openDelimiter = top entry of stack
           Pop stack
           isBalanced = true or false 
        }
        break
     ```

     For any closed parenthesis, brace, or bracket, check if the stack is empty. If it is, the expression is not balanced. Otherwise, pop the top item from the stack and determine if the delimiters are correctly paired.

   End switch-case.

4. **Post-Expression Check:**

   ``` 
   if (stack is not empty)
      isBalanced = false
   ```

   If the stack is not empty after processing the entire expression, it means there are unmatched open delimiters.

5. **Return Result:**

   ```
   return isBalanced
   ```

   The algorithm returns true if the expression is balanced and false otherwise.

End of the algorithm.
Transcribed Image Text:**Algorithm: checkBalance(expression)** This algorithm returns true if parentheses, brackets, and braces in an algebraic expression are paired correctly. 1. **Initialize:** ``` isBalanced = true ``` Start with the assumption that everything is balanced, with nothing processed yet. 2. **Read the Expression:** ``` while ((isBalanced == true) and not end of expression) { nextCharacter = read next character in expression ``` Continue reading until the end of the expression or until it's determined that the expression is not balanced. 3. **Check Character Type:** ``` switch (nextCharacter) { ``` - **Open Delimiters:** ``` case '(': case '[': case '{': Push nextCharacter onto stack break ``` For any open parenthesis, brace, or bracket, push the character onto a stack. - **Closed Delimiters:** ``` case ')': case ']': case '}': if (stack is empty) isBalanced = false else { openDelimiter = top entry of stack Pop stack isBalanced = true or false } break ``` For any closed parenthesis, brace, or bracket, check if the stack is empty. If it is, the expression is not balanced. Otherwise, pop the top item from the stack and determine if the delimiters are correctly paired. End switch-case. 4. **Post-Expression Check:** ``` if (stack is not empty) isBalanced = false ``` If the stack is not empty after processing the entire expression, it means there are unmatched open delimiters. 5. **Return Result:** ``` return isBalanced ``` The algorithm returns true if the expression is balanced and false otherwise. End of the algorithm.
1. Show the stack states (contents) as you trace the algorithm `checkBalance`, as discussed in class, for **each** of the following infix expressions:

(a) a { b [ c * ( d + e ) ] – f }

(b) { a ( b * c ) / [ d + e ] / f } – g }

(c) a { b [ c – d ] e ] ) f
Transcribed Image Text:1. Show the stack states (contents) as you trace the algorithm `checkBalance`, as discussed in class, for **each** of the following infix expressions: (a) a { b [ c * ( d + e ) ] – f } (b) { a ( b * c ) / [ d + e ] / f } – g } (c) a { b [ c – d ] e ] ) f
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 3 images

Blurred answer
Knowledge Booster
Stack
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education