# Top MCQs on Stack Data Structure with Answers

Question 1

Following is C like pseudo code of a function that takes a number as an argument, and uses a stack S to do processing. C ```void fun(int n) { Stack S; // Say it creates an empty stack S while (n > 0) { // This line pushes the value of n%2 to stack S push(&S, n%2); n = n/2; } // Run while Stack S is not empty while (!isEmpty(&S)) printf(\"%d \", pop(&S)); // pop an element from S and print it } ``` What does the above function do in general?
• Prints binary representation of n in reverse order
• Prints binary representation of n
• Prints the value of Logn
• Prints the value of Logn in reverse order

Question 2

Consider the following pseudocode that uses a stack

C ``` declare a stack of characters while ( there are more characters in the word to read ) { read a character push the character on the stack } while ( the stack is not empty ) { pop a character off the stack write the character to the screen } ```

What is output for input "geeksquiz"?

• geeksquizgeeksquiz

• ziuqskeeg

• geeksquiz

• ziuqskeegziuqskeeg

Question 3

Following is an incorrect pseudocode for the algorithm which is supposed to determine whether a sequence of parentheses is balanced:

C ``` 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?

• ((())

• ())(()

• (()()))

• (()))()

Question 4

The following postfix expression with single digit operands is evaluated using a stack:
```              8 2 3 ^ / 2 3 * + 5 1 * -
```
Note that ^ is the exponentiation operator. The top two elements of the stack after the first * is evaluated are:
• 6, 1
• 5, 7
• 3, 2
• 1, 5

Question 5

Let S be a stack of size n >= 1. Starting with the empty stack, suppose we push the first n natural numbers in sequence, and then perform n pop operations. Assume that Push and Pop operation take X seconds each, and Y seconds elapse between the end of one such stack operation and the start of the next operation. For m >= 1, define the stack-life of m as the time elapsed from the end of Push(m) to the start of the pop operation that removes m from S. The average stack-life of an element of this stack is
• n(X+ Y)
• 3Y + 2X
• n(X + Y)-X
• Y + 2X

Question 6

A single array A[1..MAXSIZE] is used to implement two stacks. The two stacks grow from opposite ends of the array. Variables top1 and top2 (topl< top 2) point to the location of the topmost element in each of the stacks. If the space is to be used efficiently, the condition for “stack full” is (GATE CS 2004)
• (top1 = MAXSIZE/2) and (top2 = MAXSIZE/2+1)
• top1 + top2 = MAXSIZE
• (top1= MAXSIZE/2) or (top2 = MAXSIZE)
• top1= top2 -1

Question 7

Assume that the operators +, -, × are left associative and ^ is right associative. The order of precedence (from highest to lowest) is ^, x , +, -. The postfix expression corresponding to the infix expression a + b × c - d ^ e ^ f is

• abc × + def ^ ^ -

• abc × + de ^ f ^ -

• ab + c × d - e ^ f ^

• - + a × bc ^ ^ def

Question 8

To evaluate an expression without any embedded function calls :

• As many stacks as the height of the expression tree are needed

• One stack is enough

• Two stacks are needed

• A Turing machine is needed in the general case

Question 9

The result evaluating the postfix expression 10 5 + 60 6 / * 8 – is
• 284
• 213
• 142
• 71

Question 10

A function f defined on stacks of integers satisfies the following properties. f(∅) = 0 and f (push (S, i)) = max (f(S), 0) + i for all stacks S and integers i.
If a stack S contains the integers 2, -3, 2, -1, 2 in order from bottom to top, what is f(S)?
• 6
• 4
• 3
• 2

There are 30 questions to complete.

Last Updated :
Take a part in the ongoing discussion