0% found this document useful (0 votes)
20 views146 pages

Data Structure

The document contains a set of 1000 multiple choice questions (MCQs) focused on data structures, covering topics such as arrays, stacks, queues, trees, and their applications. Each question includes options, the correct answer, and a brief explanation. The content is designed to test knowledge and understanding of various data structure concepts and their functionalities.

Uploaded by

l.n.sharma666
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views146 pages

Data Structure

The document contains a set of 1000 multiple choice questions (MCQs) focused on data structures, covering topics such as arrays, stacks, queues, trees, and their applications. Each question includes options, the correct answer, and a brief explanation. The content is designed to test knowledge and understanding of various data structure concepts and their functionalities.

Uploaded by

l.n.sharma666
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 146

Data Structure MCQ (Multiple Choice

Questions)
Here are 1000 Data Structure MCQ (Chapterwise).
1. What is a data structure?
a) A programming language
b) A collection of algorithms
c) A way to store and organize data
d) A type of computer hardware
View Answer
Answer: c
Explanation: A data structure is a way to store and organize data efficiently, enhancing
access and manipulation, unlike programming languages, algorithms, or computer
hardware.

2. What are the disadvantages of arrays?


a) Index value of an array can be negative
b) Elements are sequentially accessed
c) Data structure like queue or stack cannot be implemented
d) There are chances of wastage of memory space if elements inserted in an array are
lesser than the allocated size
View Answer
Answer: d
Explanation: Arrays are of fixed size. If we insert elements less than the allocated size,
unoccupied positions can’t be used again. Wastage will occur in memory.

3. Which data structure is used for implementing recursion?


a) Stack
b) Queue
c) List
d) Array
View Answer
Answer: a
Explanation: Stacks are used for the implementation of Recursion.

4. The data structure required to check whether an expression contains a balanced


parenthesis is?
a) Queue
b) Stack
c) Tree
d) Array
View Answer
Answer: b
Explanation: The stack is a simple data structure in which elements are added and removed
based on the LIFO principle. Open parenthesis is pushed into the stack and a closed
parenthesis pops out elements till the top element of the stack is its corresponding open
parenthesis. If the stack is empty, parenthesis is balanced otherwise it is unbalanced.
5. Which of the following is not the application of stack?
a) Data Transfer between two asynchronous process
b) Compiler Syntax Analyzer
c) Tracking of local variables at run time
d) A parentheses balancing program
View Answer
Answer: a
Explanation: Data transfer between the two asynchronous process uses the queue data
structure for synchronisation. The rest are all stack applications.
advertisement
6. Which data structure is needed to convert infix notation to postfix notation?
a) Tree
b) Branch
c) Stack
d) Queue
View Answer
Answer: c
Explanation: The Stack data structure is used to convert infix expression to postfix
expression. The purpose of stack is to reverse the order of the operators in the expression.
It also serves as a storage structure, as no operator can be printed until both of its operands
have appeared.

7. What is the value of the postfix expression 6 3 2 4 + – *?


a) 74
b) -18
c) 22
d) 40
View Answer
Answer: b
Explanation: Postfix Expression is (6*(3-(2+4))) which results -18 as output.

8. What data structure would you mostly likely see in non recursive implementation of a
recursive algorithm?
a) Stack
b) Linked List
c) Tree
d) Queue
View Answer
Answer: a
Explanation: In recursive algorithms, the order in which the recursive process comes back is
the reverse of the order in which it goes forward during execution. The compiler uses the
stack data structure to implement recursion. In the forwarding phase, the values of local
variables, parameters and the return address are pushed into the stack at each recursion
level. In the backing-out phase, the stacked address is popped and used to execute the rest
of the code.

9. Which of the following statement(s) about stack data structure is/are NOT correct?
a) Top of the Stack always contain the new node
b) Stack is the FIFO data structure
c) Null link is present in the last node at the bottom of the stack
d) Linked List are used for implementing Stacks
View Answer
Answer: b
Explanation: Stack follows LIFO.

10. The data structure required for Breadth First Traversal on a graph is?
a) Array
b) Stack
c) Tree
d) Queue
View Answer
Answer: d
Explanation: In Breadth First Search Traversal, BFS, starting vertex is first taken and
adjacent vertices which are unvisited are also taken. Again, the first vertex which was
added as an unvisited adjacent vertex list will be considered to add further unvisited vertices
of the graph. To get the first unvisited vertex we need to follows First In First Out principle.
Queue uses FIFO principle.

11. The prefix form of A-B/ (C * D ^ E) is?


a) -A/B*C^DE
b) -A/BC*^DE
c) -ABCD*^DE
d) -/*^ACBDE
View Answer
Answer: a
Explanation: Infix Expression is (A-B)/(C*D^E)
(-A/B)(C*D^E)
-A/B*C^DE. Thus prefix expression is -A/B*C^DE.

12. Which of the following points is/are not true about Linked List data structure when it is
compared with an array?
a) Random access is not allowed in a typical implementation of Linked Lists
b) Access of elements in linked list takes less time than compared to arrays
c) Arrays have better cache locality that can make them better in terms of performance
d) It is easy to insert and delete elements in Linked List
View Answer
Answer: b
Explanation: To access an element in a linked list, we need to traverse every element until
we reach the desired element. This will take more time than arrays as arrays provide
random access to its elements.

13. Which data structure is based on the Last In First Out (LIFO) principle?
a) Tree
b) Linked List
c) Stack
d) Queue
View Answer
Answer: c
Explanation: The data structure that follows the Last In First Out (LIFO) principle is the
Stack. It operates like a stack of objects, making it suitable for specific-order management.

14. Which of the following application makes use of a circular linked list?
a) Recursive function calls
b) Undo operation in a text editor
c) Implement Hash Tables
d) Allocating CPU to resources
View Answer
Answer: d
Explanation: Generally, round robin fashion is employed to allocate CPU time to resources
which makes use of the circular linked list data structure. Recursive function calls use stack
data structure. Undo Operation in text editor uses doubly linked lists. Hash tables uses
singly linked lists.

15. What is a bit array?


a) Data structure that compactly stores bits
b) Data structure for representing arrays of records
c) Array in which elements are not present in continuous locations
d) An array in which most of the elements have the same value
View Answer
Answer: a
Explanation: It compactly stores bits and exploits bit-level parallelism.

16. Which of the following tree data structures is not a balanced binary tree?
a) Splay tree
b) B-tree
c) AVL tree
d) Red-black tree
View Answer
Answer: b
Explanation: All the tree data structures given in options are balanced, but B-tree can have
more than two children.

17. Which of the following is not the type of queue?


a) Priority queue
b) Circular queue
c) Single ended queue
d) Ordinary queue
View Answer
Answer: c
Explanation: Queue always has two ends. So, single ended queue is not the type of queue.

18. Which of the following data structures can be used for parentheses matching?
a) n-ary tree
b) queue
c) priority queue
d) stack
View Answer
Answer: d
Explanation: For every opening brace, push it into the stack, and for every closing brace,
pop it off the stack. Do not take action for any other character. In the end, if the stack is
empty, then the input has balanced parentheses.

19. Which algorithm is used in the top tree data structure?


a) Backtracking
b) Divide and Conquer
c) Branch
d) Greedy
View Answer
Answer: b
Explanation: Top tree is a type of data structure which is based on unrooted dynamic binary
tree and is used to solve path related problems. It allows an algorithm called divide and
conquer.

20. What is the need for a circular queue?


a) easier computations
b) implement LIFO principle in queues
c) effective usage of memory
d) to delete elements based on priority
View Answer
Answer: c
Explanation: In a linear queue, dequeue operation causes the starting elements of the array
to be empty, and there is no way you can use that space, while in a circular queue, you can
effectively use that space. Priority queue is used to delete the elements based on their
priority. Higher priority elements will be deleted first whereas lower priority elements will be
deleted next. Queue data structure always follows FIFO principle.

21. Which of the following is the most widely used external memory data structure?
a) B-tree
b) Red-black tree
c) AVL tree
d) Both AVL tree and Red-black tree
View Answer
Answer: a
Explanation: In external memory, the data is transferred in form of blocks. These blocks
have data valued and pointers. And B-tree can hold both the data values and pointers. So
B-tree is used as an external memory data structure.

22. Which of the following is also known as Rope data structure?


a) Linked List
b) Array
c) String
d) Cord
View Answer
Answer: d
Explanation: Array is a linear data structure. Strings are a collection and sequence of codes,
alphabets or characters. Linked List is a linear data structure having a node containing data
input and the address of the next node. The cord is also known as the rope data structure.

23. What will be the output of the following program?

main()
{
char str[]="san foundry";
int len = strlen(str);
int i;

for(i=0;i<len;i++)
push(str[i]); // pushes an element into stack

for(i=0;i<len;i++)
pop(); //pops an element from the stack
}

a) yrdnuof nas
b) foundry nas
c) sanfoundry
d) san foundry
View Answer
Answer: a
Explanation: First, the string ‘san foundry’ is pushed one by one into the stack.
When it is popped, the output will be as ‘yrdnuof nas’.

24. Which of the following data structure can provide efficient searching of the elements?
a) binary search tree
b) unordered lists
c) 2-3 tree
d) treap
View Answer
Answer: c
Explanation: The average case time for lookup in a binary search tree, treap and 2-3 tree is
O(log n) and in unordered lists it is O(n). But in the worst case, only the 2-3 trees perform
lookup efficiently as it takes O(log n), while others take O(n).

25. What is an AVL tree?


a) a tree which is unbalanced and is a height balanced tree
b) a tree which is balanced and is a height balanced tree
c) a tree with atmost 3 children
d) a tree with three children
View Answer
Answer: b
Explanation: It is a self balancing tree with height difference atmost 1.

26. What is the time complexity for searching a key or integer in Van Emde Boas data
structure?
a) O (M!)
b) O (log M!)
c) O (log (log M))
d) O (M2)
View Answer
Answer: c
Explanation: In order to search a key or integer in the Van Emde Boas data structure, the
operation can be performed on an associative array. Hence, the time complexity for
searching a key or integer in Van Emde Boas data structure is O (log (log M)).

27. The optimal data structure used to solve Tower of Hanoi is _________
a) Tree
b) Heap
c) Priority queue
d) Stack
View Answer
Answer: d
Explanation: The Tower of Hanoi involves moving of disks ‘stacked’ at one peg to another
peg with respect to the size constraint. It is conveniently done using stacks and priority
queues. Stack approach is widely used to solve Tower of Hanoi.

28. What is the use of the bin data structure?


a) to have efficient traversal
b) to have efficient region query
c) to have efficient deletion
d) to have efficient insertion
View Answer
Answer: b
Explanation: Bin data structure allows us to have efficient region queries. A frequency of bin
is increased by one each time a data point falls into a bin.

29. Which is the most appropriate data structure for reversing a word?
a) stack
b) queue
c) graph
d) tree
View Answer
Answer: a
Explanation: Stack is the most appropriate data structure for reversing a word because
stack follows LIFO principle.

30. What is the functionality of the following piece of code?

public void display()


{
if(size == 0)
System.out.println("underflow");
else
{
Node current = first;
while(current != null)
{
System.out.println(current.getEle());
current = current.getNext();
}
}
}

a) display the list


b) reverse the list
c) reverse the list excluding top-of-the-stack-element
d) display the list excluding top-of-the-stack-element
View Answer
Answer: a
Explanation: An alias of the node ‘first’ is created which traverses through the list and
displays the elements.

31. Which of the following is the simplest data structure that supports range searching?
a) AA-trees
b) K-d trees
c) Heaps
d) binary search trees
View Answer
Answer: c
Explanation: K-d trees are the simplest data structure that supports range searching and
also it achieves the respectable running time.

32. What is the advantage of a hash table as a data structure?


a) easy to implement
b) faster access of data
c) exhibit good locality of reference
d) very efficient for less number of entries
View Answer
Answer: b
Explanation: Hash table is a data structure that has an advantage that it allows fast access
of elements. Hash functions are used to determine the index of any input record in a hash
table.

33. Which type of data structure is a ternary heap?


a) Hash
b) Array
c) Priority Stack
d) Priority Queue
View Answer
Answer: d
Explanation: Ternary heap is a type of data structure in the field of computer science. It is a
part of the Heap data structure family. It is a priority queue type of data structure that follows
all the property of heap.

34. What is a dequeue?


a) A queue implemented with both singly and doubly linked lists
b) A queue with insert/delete defined for front side of the queue
c) A queue with insert/delete defined for both front and rear ends of the queue
d) A queue implemented with a doubly linked list
View Answer
Answer: c
Explanation: A dequeue or a double ended queue is a queue with insert/delete defined for
both front and rear ends of the queue.

35. A data structure in which elements can be inserted or deleted at/from both ends but not
in the middle is?
a) Priority queue
b) Dequeue
c) Circular queue
d) Queue
View Answer
Answer: b
Explanation: In dequeuer, we can insert or delete elements from both the ends. In queue,
we will follow first in first out principle for insertion and deletion of elements. Element with
least priority will be deleted in a priority queue.

36. What is the output of the following Java code?

public class array


{
public static void main(String args[])
{
int []arr = {1,2,3,4,5};
System.out.println(arr[2]);
System.out.println(arr[4]);
}
}

a) 4 and 2
b) 2 and 4
c) 5 and 3
d) 3 and 5
View Answer
Answer: d
Explanation: Array indexing starts from 0.

37. In simple chaining, what data structure is appropriate?


a) Doubly linked list
b) Circular linked list
c) Singly linked list
d) Binary trees
View Answer
Answer: a

Data Structure Questions and Answers –


Array and Array Operations
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on “Array
and Array Operations”.

1. Which of these best describes an array?


a) A data structure that shows a hierarchical behavior
b) Container of objects of similar types
c) Arrays are immutable once initialised
d) Array is not a data structure
View Answer
Answer: b
Explanation: Array contains elements only of the same type.

2. How do you initialize an array in C?


a) int arr[3] = (1,2,3);
b) int arr(3) = {1,2,3};
c) int arr[3] = {1,2,3};
d) int arr(3) = (1,2,3);
View Answer
Answer: c
Explanation: This is the syntax to initialize an array in C.

3. How do you instantiate an array in Java?


a) int arr[] = new int(3);
b) int arr[];
c) int arr[] = new int[3];
d) int arr() = new int(3);
View Answer
Answer: c
Explanation: Note that int arr[]; is declaration whereas int arr[] = new int[3]; is to instantiate
an array.
advertisement
4. Which of the following is the correct way to declare a multidimensional array in Java?
a) int[] arr;
b) int arr[[]];
c) int[][]arr;
d) int[[]] arr;
View Answer
Answer: c
Explanation: The syntax to declare multidimensional array in java is either int[][] arr; or int
arr[][];

5. What is the output of the following Java code?

Subscribe Now: Data Structure Newsletter | Important Subjects Newsletters


public class array
{
public static void main(String args[])
{
int []arr = {1,2,3,4,5};
System.out.println(arr[2]);
System.out.println(arr[4]);
}
}

a) 3 and 5
b) 5 and 3
c) 2 and 4
d) 4 and 2
View Answer
Answer: a
Explanation: Array indexing starts from 0.

6. What is the output of the following Java code?

public class array


{
public static void main(String args[])
{
int []arr = {1,2,3,4,5};
System.out.println(arr[5]);
}
}

a) 4
b) 5
c) ArrayIndexOutOfBoundsException
d) InavlidInputException
View Answer
Answer: c
Explanation: Trying to access an element beyond the limits of an array gives
ArrayIndexOutOfBoundsException.

7. When does the ArrayIndexOutOfBoundsException occur?


a) Compile-time
b) Run-time
c) Not an error
d) Not an exception at all
View Answer
Answer: b
Explanation: ArrayIndexOutOfBoundsException is a run-time exception and the compilation
is error-free.

8. Which of the following concepts make extensive use of arrays?


a) Binary trees
b) Scheduling of processes
c) Caching
d) Spatial locality
View Answer
Answer: d
Explanation: Whenever a particular memory location is referred to, it is likely that the
locations nearby are also referred, arrays are stored as contiguous blocks in memory, so if
you want to access array elements, spatial locality makes it to access quickly.

9. What are the advantages of arrays?


a) Objects of mixed data types can be stored
b) Elements in an array cannot be sorted
c) Index of first element of an array is 1
d) Easier to store elements of same data type
View Answer
Answer: d
Explanation: Arrays store elements of the same data type and present in continuous
memory locations.

10. What are the disadvantages of arrays?


a) Data structure like queue or stack cannot be implemented
b) There are chances of wastage of memory space if elements inserted in an array are
lesser than the allocated size
c) Index value of an array can be negative
d) Elements are sequentially accessed
View Answer
Answer: b
Explanation: Arrays are of fixed size. If we insert elements less than the allocated size,
unoccupied positions can’t be used again. Wastage will occur in memory.

11. Assuming int is of 4bytes, what is the size of int arr[15];?


a) 15
b) 19
c) 11
d) 60
View Answer
Answer: d
Explanation: Since there are 15 int elements and each int is of 4bytes, we get 15*4 =
60bytes.

12. In general, the index of the first element in an array is __________


a) 0
b) -1
c) 2
d) 1
View Answer
Answer: a
Explanation: In general, Array Indexing starts from 0. Thus, the index of the first element in
an array is 0.

13. Elements in an array are accessed _____________


a) randomly
b) sequentially
c) exponentially
d) logarithmically
View Answer
Answer: a
Explanation: Elements in an array are accessed randomly. In Linked lists, elements are
accessed sequentially.

Data Structure Questions and Answers –


Array and Array Operations
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on “Array
and Array Operations”.

1. Which of these best describes an array?


a) A data structure that shows a hierarchical behavior
b) Container of objects of similar types
c) Arrays are immutable once initialised
d) Array is not a data structure
View Answer
Answer: b
Explanation: Array contains elements only of the same type.

2. How do you initialize an array in C?


a) int arr[3] = (1,2,3);
b) int arr(3) = {1,2,3};
c) int arr[3] = {1,2,3};
d) int arr(3) = (1,2,3);
View Answer
Answer: c
Explanation: This is the syntax to initialize an array in C.

3. How do you instantiate an array in Java?


a) int arr[] = new int(3);
b) int arr[];
c) int arr[] = new int[3];
d) int arr() = new int(3);
View Answer
Answer: c
Explanation: Note that int arr[]; is declaration whereas int arr[] = new int[3]; is to instantiate
an array.
advertisement
4. Which of the following is the correct way to declare a multidimensional array in Java?
a) int[] arr;
b) int arr[[]];
c) int[][]arr;
d) int[[]] arr;
View Answer
Answer: c
Explanation: The syntax to declare multidimensional array in java is either int[][] arr; or int
arr[][];
5. What is the output of the following Java code?

Subscribe Now: Data Structure Newsletter | Important Subjects Newsletters


public class array
{
public static void main(String args[])
{
int []arr = {1,2,3,4,5};
System.out.println(arr[2]);
System.out.println(arr[4]);
}
}

a) 3 and 5
b) 5 and 3
c) 2 and 4
d) 4 and 2
View Answer
Answer: a
Explanation: Array indexing starts from 0.

6. What is the output of the following Java code?

public class array


{
public static void main(String args[])
{
int []arr = {1,2,3,4,5};
System.out.println(arr[5]);
}
}

a) 4
b) 5
c) ArrayIndexOutOfBoundsException
d) InavlidInputException
View Answer
Answer: c
Explanation: Trying to access an element beyond the limits of an array gives
ArrayIndexOutOfBoundsException.

7. When does the ArrayIndexOutOfBoundsException occur?


a) Compile-time
b) Run-time
c) Not an error
d) Not an exception at all
View Answer
Answer: b
Explanation: ArrayIndexOutOfBoundsException is a run-time exception and the compilation
is error-free.
8. Which of the following concepts make extensive use of arrays?
a) Binary trees
b) Scheduling of processes
c) Caching
d) Spatial locality
View Answer
Answer: d
Explanation: Whenever a particular memory location is referred to, it is likely that the
locations nearby are also referred, arrays are stored as contiguous blocks in memory, so if
you want to access array elements, spatial locality makes it to access quickly.

9. What are the advantages of arrays?


a) Objects of mixed data types can be stored
b) Elements in an array cannot be sorted
c) Index of first element of an array is 1
d) Easier to store elements of same data type
View Answer
Answer: d
Explanation: Arrays store elements of the same data type and present in continuous
memory locations.

10. What are the disadvantages of arrays?


a) Data structure like queue or stack cannot be implemented
b) There are chances of wastage of memory space if elements inserted in an array are
lesser than the allocated size
c) Index value of an array can be negative
d) Elements are sequentially accessed
View Answer
Answer: b
Explanation: Arrays are of fixed size. If we insert elements less than the allocated size,
unoccupied positions can’t be used again. Wastage will occur in memory.

11. Assuming int is of 4bytes, what is the size of int arr[15];?


a) 15
b) 19
c) 11
d) 60
View Answer
Answer: d
Explanation: Since there are 15 int elements and each int is of 4bytes, we get 15*4 =
60bytes.

12. In general, the index of the first element in an array is __________


a) 0
b) -1
c) 2
d) 1
View Answer
Answer: a
Explanation: In general, Array Indexing starts from 0. Thus, the index of the first element in
an array is 0.

13. Elements in an array are accessed _____________


a) randomly
b) sequentially
c) exponentially
d) logarithmically
View Answer
Answer: a
Explanation: Elements in an array are accessed randomly. In Linked lists, elements are
accessed sequentially.

Data Structure Multiple Choice Questions –


Stack
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on
“Stack”.

1. Process of inserting an element in stack is called ____________


a) Create
b) Push
c) Evaluation
d) Pop
View Answer
Answer: b
Explanation: Push operation allows users to insert elements in the stack. If the stack is filled
completely and trying to perform push operation stack – overflow can happen.

2. Process of removing an element from stack is called __________


a) Create
b) Push
c) Evaluation
d) Pop
View Answer
Answer: d
Explanation: Elements in the stack are removed using pop operation. Pop operation
removes the top most element in the stack i.e. last entered element.

3. In a stack, if a user tries to remove an element from an empty stack it is called


_________
a) Underflow
b) Empty collection
c) Overflow
d) Garbage Collection
View Answer
Answer: a
Explanation: Underflow occurs when the user performs a pop operation on an empty stack.
Overflow occurs when the stack is full and the user performs a push operation. Garbage
Collection is used to recover the memory occupied by objects that are no longer used.
advertisement
4. Pushing an element into stack already having five elements and stack size of 5, then
stack becomes ___________
a) Overflow
b) Crash
c) Underflow
d) User flow
View Answer
Answer: a
Explanation: The stack is filled with 5 elements and pushing one more element causes a
stack overflow. This results in overwriting memory, code and loss of unsaved work on the
computer.

5. Entries in a stack are “ordered”. What is the meaning of this statement?


a) A collection of stacks is sortable
b) Stack entries may be compared with the ‘<‘ operation
c) The entries are stored in a linked list
d) There is a Sequential entry that is one by one
View Answer
Answer: d
Explanation: In stack data structure, elements are added one by one using push operation.
Stack follows LIFO Principle i.e. Last In First Out(LIFO).

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!

6. Which of the following is not the application of stack?


a) A parentheses balancing program
b) Tracking of local variables at run time
c) Compiler Syntax Analyzer
d) Data Transfer between two asynchronous process
View Answer
Answer: d
Explanation: Data transfer between the two asynchronous process uses the queue data
structure for synchronisation. The rest are all stack applications.

7. Consider the usual algorithm for determining whether a sequence of parentheses is


balanced. The maximum number of parentheses that appear on the stack AT ANY ONE
TIME when the algorithm analyzes: (()(())(()))?
a) 1
b) 2
c) 3
d) 4 or more
View Answer
Answer: c
Explanation: In the entire parenthesis balancing method when the incoming token is a left
parenthesis it is pushed into stack. A right parenthesis makes pop operation to delete the
elements in stack till we get left parenthesis as top most element. 3 elements are there in
stack before right parentheses comes. Therefore, maximum number of elements in stack at
run time is 3.

8. Consider the usual algorithm for determining whether a sequence of parentheses is


balanced. Suppose that you run the algorithm on a sequence that contains 2 left
parentheses and 3 right parentheses (in some order). The maximum number of
parentheses that appear on the stack AT ANY ONE TIME during the computation?
a) 1
b) 2
c) 3
d) 4 or more
View Answer
Answer: b
Explanation: In the entire parenthesis balancing method when the incoming token is a left
parenthesis it is pushed into stack. A right parenthesis makes pop operation to delete the
elements in stack till we get left parenthesis as top most element. 2 left parenthesis are
pushed whereas one right parenthesis removes one of left parenthesis. 2 elements are
there before right parenthesis which is the maximum number of elements in stack at run
time.

9. What is the value of the postfix expression 6 3 2 4 + – *?


a) 1
b) 40
c) 74
d) -18
View Answer
Answer: d
Explanation: Postfix Expression is (6*(3-(2+4))) which results -18 as output.

10. Here is an infix expression: 4 + 3*(6*3-12). Suppose that we are using the usual stack
algorithm to convert the expression from infix to postfix notation. The maximum number of
symbols that will appear on the stack AT ONE TIME during the conversion of this
expression?
a) 1
b) 2
c) 3
d) 4
View Answer
Answer: d
Explanation: When we perform the conversion from infix to postfix expression +, *, (, *
symbols are placed inside the stack. A maximum of 4 symbols are identified during the
entire conversion.
Data Structure Questions and Answers –
Stack Operations – 2
This set of Data Structure Interview Questions and Answers focuses on “Stack Operations –
2”.

1. The postfix form of the expression (A+ B)*(C*D- E)*F / G is?


a) AB+ CD*E – FG /**
b) AB + CD* E – F **G /
c) AB + CD* E – *F *G /
d) AB + CDE * – * F *G /
View Answer
Answer: c
Explanation: (((A+ B)*(C*D- E)*F) / G) is converted to postfix expression as
(AB+(*(C*D- E)*F )/ G)
(AB+CD*E-*F) / G
(AB+CD*E-*F * G/). Thus Postfix expression is AB+CD*E-*F*G/

2. The data structure required to check whether an expression contains a balanced


parenthesis is?
a) Stack
b) Queue
c) Array
d) Tree
View Answer
Answer: a
Explanation: The stack is a simple data structure in which elements are added and removed
based on the LIFO principle. Open parenthesis is pushed into the stack and a closed
parenthesis pops out elements till the top element of the stack is its corresponding open
parenthesis. If the stack is empty, parenthesis is balanced otherwise it is unbalanced.

3. What data structure would you most likely see in non recursive implementation of a
recursive algorithm?
a) Linked List
b) Stack
c) Queue
d) Tree
View Answer
Answer: b
Explanation: In recursive algorithms, the order in which the recursive process comes back is
the reverse of the order in which it goes forward during execution. The compiler uses the
stack data structure to implement recursion. In the forwarding phase, the values of local
variables, parameters and the return address are pushed into the stack at each recursion
level. In the backing-out phase, the stacked address is popped and used to execute the rest
of the code.
advertisement
4. The process of accessing data stored in a serial access memory is similar to
manipulating data on a ________
a) Heap
b) Binary Tree
c) Array
d) Stack
View Answer
Answer: d
Explanation: In serial access memory data records are stored one after the other in which
they are created and are accessed sequentially. In stack data structure, elements are
accessed sequentially. Stack data structure resembles the serial access memory.

5. The postfix form of A*B+C/D is?


a) *AB/CD+
b) AB*CD/+
c) A*BC+/D
d) ABCD+/*
View Answer
Answer: b
Explanation: Infix expression is (A*B)+(C/D)
AB*+(C/D)
AB*CD/+. Thus postfix expression is AB*CD/+.

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!

6. Which data structure is needed to convert infix notation to postfix notation?


a) Branch
b) Tree
c) Queue
d) Stack
View Answer
Answer: d
Explanation: The Stack data structure is used to convert infix expression to postfix
expression. The purpose of stack is to reverse the order of the operators in the expression.
It also serves as a storage structure, as no operator can be printed until both of its operands
have appeared.

7. The prefix form of A-B/ (C * D ^ E) is?


a) -/*^ACBDE
b) -ABCD*^DE
c) -A/B*C^DE
d) -A/BC*^DE
View Answer
Answer: c
Explanation: Infix Expression is (A-B)/(C*D^E)
(-A/B)(C*D^E)
-A/B*C^DE. Thus prefix expression is -A/B*C^DE.

8. What is the result of the following operation?


Top (Push (S, X))
a) X
b) X+S
c) S
d) XS
View Answer
Answer: a
Explanation: The function Push(S,X) pushes the value X in the stack S. Top() function gives
the value which entered last. X entered into stack S at last.

9. The prefix form of an infix expression (p + q) – (r * t) is?


a) + pq – *rt
b) – +pqr * t
c) – +pq * rt
d) – + * pqrt
View Answer
Answer: c
Explanation: Given Infix Expression is ((p+q)-(r*t))
(+pq)-(r*t)
(-+pq)(r*t)
-+pq*rt. Thus prefix expression is -+pq*rt.

10. Which data structure is used for implementing recursion?


a) Queue
b) Stack
c) Array
d) List
View Answer
Answer: b
Explanation: Stacks are used for the implementation of Recursion.

Data Structure Questions and Answers –


Stack Operations – 3
This set of Data Structure Questions and Answers for Freshers focuses on “Stack
Operations – 3”.

1. The result of evaluating the postfix expression 5, 4, 6, +, *, 4, 9, 3, /, +, * is?


a) 600
b) 350
c) 650
d) 588
View Answer
Answer: b
Explanation: The postfix expression is evaluated using stack. We will get the infix
expression as
(5*(4+6))*(4+9/3). On solving the Infix Expression, we get
(5*(10))*(4+3)
= 50*7
= 350.
(A + B ⋀D)/(E – F)+G
2. Convert the following infix expressions into its equivalent postfix expressions.

a) (A B D ⋀ + E F – / G +)

c) (A B D ⋀ + E F/- G +)
b) (A B D +⋀ E F – / G +)

d) (A B D E F + ⋀ / – G +)
View Answer

Explanation: The given infix expression is (A + B ⋀D)/(E – F)+G.


Answer: a

(A B D ^ + ) / (E – F) +G
(A B D ^ + E F – ) + G. ‘/’ is present in stack.
A B D ^ + E F – / G +. Thus Postfix Expression is A B D ^ + E F – / G +.

3. Convert the following Infix expression to Postfix form using a stack.


x + y * z + (p * q + r) * s, Follow usual precedence rule and assume that the expression is
legal.
a) xyz*+pq*r+s*+
b) xyz*+pq*r+s+*
c) xyz+*pq*r+s*+
d) xyzp+**qr+s*+
View Answer
Answer: a
Explanation: The Infix Expression is x + y * z + (p * q + r) * s.
(x y z ) + (p * q + r) * s. ‘+’, ‘*’ are present in stack.
(x y z * + p q * r) * s. ‘+’ is present in stack.
x y z * + p q * r + s * +. Thus Postfix Expression is x y z * + p q * r + s * +.
advertisement
4. Which of the following statement(s) about stack data structure is/are NOT correct?
a) Linked List are used for implementing Stacks
b) Top of the Stack always contain the new node
c) Stack is the FIFO data structure
d) Null link is present in the last node at the bottom of the stack
View Answer
Answer: c
Explanation: Stack follows LIFO.

5. Consider the following operation performed on a stack of size 5.

Push(1);

Pop();

Push(2);

Push(3);

Pop();
Push(4);

Pop();

Pop();

Push(5);

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!

After the completion of all operation, the number of elements present in stack is?
a) 1
b) 2
c) 3
d) 4
View Answer
Answer: a
Explanation: Number of elements present in stack is equal to the difference between
number of push operations and number of pop operations. Number of elements is 5-4=1.

6. Which of the following is not an inherent application of stack?


a) Reversing a string
b) Evaluation of postfix expression
c) Implementation of recursion
d) Job scheduling
View Answer
Answer: d
Explanation: Job Scheduling is not performed using stacks.

7. The type of expression in which operator succeeds its operands is?


a) Infix Expression
b) Prefix Expression
c) Postfix Expression
d) Both Prefix and Postfix Expressions
View Answer
Answer: c
Explanation: The expression in which operator succeeds its operands is called postfix
expression. The expression in which operator precedes the operands is called prefix
expression. If an operator is present between two operands, then it is called infix
expressions.

8. Assume that the operators +,-, X are left associative and ^ is right associative. The order
of precedence (from highest to lowest) is ^, X, +, -. The postfix expression for the infix
expression a + b X c – d ^ e ^ f is?
a) abc X+ def ^^ –
b) abc X+ de^f^ –
c) ab+c Xd – e ^f^
d) -+aXbc^ ^def
View Answer
Answer: b
Explanation: Given Infix Expression is a + b X c – d ^ e ^ f. And X is right associative. Thus
the final postfix expression is abc X+def^^-

9. If the elements “A”, “B”, “C” and “D” are placed in a stack and are deleted one at a time,
what is the order of removal?
a) ABCD
b) DCBA
c) DCAB
d) ABDC
View Answer
Answer: b
Explanation: Stack follows LIFO(Last In First Out). So the removal order of elements are
DCBA.

Data Structure Questions and Answers –


Queue Operations
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on
“Queue Operations”.

1. A linear list of elements in which deletion can be done from one end (front) and insertion
can take place only at the other end (rear) is known as _____________
a) Queue
b) Stack
c) Tree
d) Linked list
View Answer
Answer: a
Explanation: Linear list of elements in which deletion is done at front side and insertion at
rear side is called Queue. In stack we will delete the last entered element first.

2. The data structure required for Breadth First Traversal on a graph is?
a) Stack
b) Array
c) Queue
d) Tree
View Answer
Answer: c
Explanation: In Breadth First Search Traversal, BFS, starting vertex is first taken and
adjacent vertices which are unvisited are also taken. Again, the first vertex which was
added as an unvisited adjacent vertex list will be considered to add further unvisited vertices
of the graph. To get the first unvisited vertex we need to follows First In First Out principle.
Queue uses FIFO principle.

3. A queue follows __________


a) FIFO (First In First Out) principle
b) LIFO (Last In First Out) principle
c) Ordered array
d) Linear tree
View Answer
Answer: a
Explanation: Element first added in queue will be deleted first which is FIFO principle.
advertisement
ADVERTISEMENT
ADVERTISEMENT

4. Circular Queue is also known as ________


a) Ring Buffer
b) Square Buffer
c) Rectangle Buffer
d) Curve Buffer
View Answer
Answer: a
Explanation: Circular Queue is also called as Ring Buffer. Circular Queue is a linear data
structure in which last position is connected back to the first position to make a circle. It
forms a ring structure.

5. If the elements “A”, “B”, “C” and “D” are placed in a queue and are deleted one at a time,
in what order will they be removed?
a) ABCD
b) DCBA
c) DCAB
d) ABDC
View Answer
Answer: a
Explanation: Queue follows FIFO approach. i.e. First in First Out Approach. So, the order of
removal elements are ABCD.

Subscribe Now: Data Structure Newsletter | Important Subjects Newsletters

6. A data structure in which elements can be inserted or deleted at/from both ends but not in
the middle is?
a) Queue
b) Circular queue
c) Dequeue
d) Priority queue
View Answer
Answer: c
Explanation: In dequeuer, we can insert or delete elements from both the ends. In queue,
we will follow first in first out principle for insertion and deletion of elements. Element with
least priority will be deleted in a priority queue.

7. A normal queue, if implemented using an array of size MAX_SIZE, gets full when?
a) Rear = MAX_SIZE – 1
b) Front = (rear + 1)mod MAX_SIZE
c) Front = rear + 1
d) Rear = front
View Answer
Answer: a
Explanation: When Rear = MAX_SIZE – 1, there will be no space left for the elements to be
added in queue. Thus queue becomes full.

8. Queues serve major role in ______________


a) Simulation of recursion
b) Simulation of arbitrary linked list
c) Simulation of limited resource allocation
d) Simulation of heap sort
View Answer
Answer: c
Explanation: Simulation of recursion uses stack data structure. Simulation of arbitrary linked
lists uses linked lists. Simulation of resource allocation uses queue as first entered data
needs to be given first priority during resource allocation. Simulation of heap sort uses heap
data structure.

9. Which of the following is not the type of queue?


a) Ordinary queue
b) Single ended queue
c) Circular queue
d) Priority queue
View Answer
Answer: b
Explanation: Queue always has two ends. So, single ended queue is not the type of queue.

Data Structure Questions and Answers –


Singly Linked List Operations – 1
This set of Data Structure Interview Questions & Answers focuses on “Singly Linked List
Operations – 1”.

1. A linear collection of data elements where the linear node is given by means of pointer is
called?
a) Linked list
b) Node list
c) Primitive list
d) Unordered list
View Answer
Answer: a
Explanation: In Linked list each node has its own data and the address of next node. These
nodes are linked by using pointers. Node list is an object that consists of a list of all nodes in
a document with in a particular selected set of nodes.
2. Consider an implementation of unsorted singly linked list. Suppose it has its
representation with a head pointer only. Given the representation, which of the following
operation can be implemented in O(1) time?

i) Insertion at the front of the linked list


ii) Insertion at the end of the linked list
iii) Deletion of the front node of the linked list
iv) Deletion of the last node of the linked list

a) I and II
b) I and III
c) I, II and III
d) I, II and IV
View Answer
Answer: b
Explanation: We know the head node in the given linked list. Insertion and deletion of
elements at the front of the linked list completes in O (1) time whereas for insertion and
deletion at the last node requires to traverse through every node in the linked list. Suppose
there are n elements in a linked list, we need to traverse through each node. Hence time
complexity becomes O(n).
advertisement
ADVERTISEMENT
ADVERTISEMENT

3. In linked list each node contains a minimum of two fields. One field is data field to store
the data second field is?
a) Pointer to character
b) Pointer to integer
c) Pointer to node
d) Node
View Answer
Answer: c
Explanation: Each node in a linked list contains data and a pointer (reference) to the next
node. Second field contains pointer to node.

Note: Join free Sanfoundry classes at Telegram or Youtube

4. What would be the asymptotic time complexity to add a node at the end of singly linked
list, if the pointer is initially pointing to the head of the list?
a) O(1)
b) O(n)
c) θ(n)
d) θ(1)
View Answer
Answer: c
Explanation: In case of a linked list having n elements, we need to travel through every
node of the list to add the element at the end of the list. Thus asymptotic time complexity is
θ(n).
5. What would be the asymptotic time complexity to insert an element at the front of the
linked list (head is known)?
a) O(1)
b) O(n)
c) O(n2)
d) O(n3)
View Answer
Answer: a
Explanation: To add an element at the front of the linked list, we will create a new node
which holds the data to be added to the linked list and pointer which points to head position
in the linked list. The entire thing happens within O (1) time. Thus the asymptotic time
complexity is O (1).

6. What would be the asymptotic time complexity to find an element in the linked list?
a) O(1)
b) O(n)
c) O(n2)
d) O(n4)
View Answer
Answer: b
Explanation: If the required element is in the last position, we need to traverse the entire
linked list. This will take O (n) time to search the element.

7. What would be the asymptotic time complexity to insert an element at the second position
in the linked list?
a) O(1)
b) O(n)
c) O(n2)
d) O(n3)
View Answer
Answer: a
Explanation: A new node is created with the required element. The pointer of the new node
points the node to which the head node of the linked list is also pointing. The head node
pointer is changed and it points to the new node which we created earlier. The entire
process completes in O (1) time. Thus the asymptotic time complexity to insert an element
in the second position of the linked list is O (1).

8. The concatenation of two lists can be performed in O(1) time. Which of the following
variation of the linked list can be used?
a) Singly linked list
b) Doubly linked list
c) Circular doubly linked list
d) Array implementation of list
View Answer
Answer: c
Explanation: We can easily concatenate two lists in O (1) time using singly or doubly linked
list, provided that we have a pointer to the last node at least one of the lists. But in case of
circular doubly linked lists, we will break the link in both the lists and hook them together.
Thus circular doubly linked list concatenates two lists in O (1) time.
9. Consider the following definition in c programming language.

struct node
{
int data;
struct node * next;
}
typedef struct node NODE;
NODE *ptr;

Which of the following c code is used to create new node?


a) ptr = (NODE*)malloc(sizeof(NODE));
b) ptr = (NODE*)malloc(NODE);
c) ptr = (NODE*)malloc(sizeof(NODE*));
d) ptr = (NODE)malloc(sizeof(NODE));
View Answer
Answer: a
Explanation: As it represents the right way to create a node.

Data Structure Questions and Answers –


Singly Linked List Operations – 2
This set of Data Structure Interview Questions and Answers for freshers focuses on “Singly
Linked Lists Operations – 2”.

1. What kind of linked list is best to answer questions like “What is the item at position n?”
a) Singly linked list
b) Doubly linked list
c) Circular linked list
d) Array implementation of linked list
View Answer
Answer: d
Explanation: Arrays provide random access to elements by providing the index value within
square brackets. In the linked list, we need to traverse through each element until we reach
the nth position. Time taken to access an element represented in arrays is less than the
singly, doubly and circular linked lists. Thus, array implementation is used to access the
item at the position n.

2. Linked lists are not suitable for the implementation of ___________


a) Insertion sort
b) Radix sort
c) Polynomial manipulation
d) Binary search
View Answer
Answer: d
Explanation: It cannot be implemented using linked lists.

3. Linked list is considered as an example of ___________ type of memory allocation.


a) Dynamic
b) Static
c) Compile time
d) Heap
View Answer
Answer: a
Explanation: As memory is allocated at the run time.
advertisement
4. In Linked List implementation, a node carries information regarding ___________
a) Data
b) Link
c) Data and Link
d) Node
View Answer
Answer: c
Explanation: A linked list is a collection of objects linked together by references from an
object to another object. By convention these objects are names as nodes. Linked list
consists of nodes where each node contains one or more data fields and a reference(link)
to the next node.

5. Linked list data structure offers considerable saving in _____________


a) Computational Time
b) Space Utilization
c) Space Utilization and Computational Time
d) Speed Utilization
View Answer
Answer: c
Explanation: Linked lists saves both space and time.

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!

6. Which of the following points is/are not true about Linked List data structure when it is
compared with an array?
a) Arrays have better cache locality that can make them better in terms of performance
b) It is easy to insert and delete elements in Linked List
c) Random access is not allowed in a typical implementation of Linked Lists
d) Access of elements in linked list takes less time than compared to arrays
View Answer
Answer: d
Explanation: To access an element in a linked list, we need to traverse every element until
we reach the desired element. This will take more time than arrays as arrays provide
random access to its elements.

7. What does the following function do for a given Linked List with first node as head?

void fun1(struct node* head)


{
if(head == NULL)
return;
fun1(head->next);
printf("%d ", head->data);
}

a) Prints all nodes of linked lists


b) Prints all nodes of linked list in reverse order
c) Prints alternate nodes of Linked List
d) Prints alternate nodes in reverse order
View Answer
Answer: b
Explanation: fun1() prints the given Linked List in reverse manner.
For Linked List 1->2->3->4->5, fun1() prints 5->4->3->2->1.

8. Which of the following sorting algorithms can be used to sort a random linked list with
minimum time complexity?
a) Insertion Sort
b) Quick Sort
c) Heap Sort
d) Merge Sort
View Answer
Answer: d
Explanation: Both Merge sort and Insertion sort can be used for linked lists. The slow
random-access performance of a linked list makes other algorithms (such as quicksort)
perform poorly, and others (such as heapsort) completely impossible. Since worst case time
complexity of Merge Sort is O(nLogn) and Insertion sort is O(n2), merge sort is preferred

Data Structure Questions and Answers –


Singly Linked List Operations – 3
This set of Data Structure Questions and Answers for Experienced people focuses on
“Singly Linked Lists Operations – 3”.

1. The following function reverse() is supposed to reverse a singly linked list. There is one
line missing at the end of the function.

/* Link list node */


struct node
{
int data;
struct node* next;
};

/* head_ref is a double pointer which points to head (or start) pointer


of linked list */
static void reverse(struct node** head_ref)
{
struct node* prev = NULL;
struct node* current = *head_ref;
struct node* next;
while (current != NULL)
{
next = current->next;
current->next = prev;
prev = current;
current = next;
}
/*ADD A STATEMENT HERE*/
}

What should be added in place of “/*ADD A STATEMENT HERE*/”, so that the function
correctly reverses a linked list.
a) *head_ref = prev;
b) *head_ref = current;
c) *head_ref = next;
d) *head_ref = NULL;
View Answer
Answer: a
Explanation: *head_ref = prev; At the end of while loop, the prev pointer points to the last
node of original linked list.
We need to change *head_ref so that the head pointer now starts pointing to the last node.
advertisement
ADVERTISEMENT
ADVERTISEMENT

2. What is the output of following function for start pointing to first node of following linked
list?

1->2->3->4->5->6
void fun(struct node* start)
{
if(start == NULL)
return;
printf("%d ", start->data);
if(start->next != NULL )
fun(start->next->next);
printf("%d ", start->data);
}

a) 1 4 6 6 4 1
b) 1 3 5 1 3 5
c) 1 2 3 5
d) 1 3 5 5 3 1
View Answer
Answer: d
Explanation: fun() prints alternate nodes of the given Linked List, first from head to end, and
then from end to head.
If Linked List has even number of nodes, then skips the last node.

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!
3. The following C function takes a simply-linked list as an input argument. It modifies the
list by moving the last element to the front of the list and returns the modified list. Some part
of the code is left blank. Choose the correct alternative to replace the blank line.

typedef struct node


{
int value;
struct node *next;
}Node;

Node *move_to_front(Node *head)


{
Node *p, *q;
if ((head == NULL: || (head->next == NULL))
return head;
q = NULL; p = head;
while (p-> next !=NULL)
{
q = p;
p = p->next;
}
_______________________________
return head;
}

a) q = NULL; p->next = head; head = p;


b) q->next = NULL; head = p; p->next = head;
c) head = p; p->next = q; q->next = NULL;
d) q->next = NULL; p->next = head; head = p;
View Answer
Answer: d
Explanation: When while loop completes its execution, node ‘p’ refers to the last node
whereas the ‘q’ node refers to the node before ‘p’ in the linked list. q->next=NULL makes q
as the last node. p->next=head places p as the first node. the head must be modified to ‘p’
as ‘p’ is the starting node of the list (head=p). Thus the sequence of steps are q-
>next=NULL, p->next=head, head=p.

4. The following C function takes a single-linked list of integers as a parameter and


rearranges the elements of the list. The function is called with the list containing the integers
1, 2, 3, 4, 5, 6, 7 in the given order. What will be the contents of the list after the function
completes execution?

struct node
{
int value;
struct node *next;
};
void rearrange(struct node *list)
{
struct node *p, * q;
int temp;
if ((!list) || !list->next)
return;
p = list;
q = list->next;
while(q)
{
temp = p->value;
p->value = q->value;
q->value = temp;
p = q->next;
q = p?p->next:0;
}
}

a) 1, 2, 3, 4, 5, 6, 7
b) 2, 1, 4, 3, 6, 5, 7
c) 1, 3, 2, 5, 4, 7, 6
d) 2, 3, 4, 5, 6, 7, 1
View Answer
Answer: b
Explanation: The function rearrange() exchanges data of every node with its next node. It
starts exchanging data from the first node itself.

5. In the worst case, the number of comparisons needed to search a singly linked list of
length n for a given element is?
a) log 2 n
b) n⁄2
c) log 2 n – 1
d) n
View Answer
Answer: d
Explanation: In the worst case, the element to be searched has to be compared with all
elements of the linked list.

6. Given pointer to a node X in a singly linked list. Only one pointer is given, pointer to head
node is not given, can we delete the node X from given linked list?
a) Possible if X is not last node
b) Possible if size of linked list is even
c) Possible if size of linked list is odd
d) Possible if X is not first node
View Answer
Answer: a
Explanation: Following are simple steps.
struct node *temp = X->next;
X->data = temp->data;
X->next = temp->next;
free(temp);

7. You are given pointers to first and last nodes of a singly linked list, which of the following
operations are dependent on the length of the linked list?
a) Delete the first element
b) Insert a new element as a first element
c) Delete the last element of the list
d) Add a new element at the end of the list
View Answer
Answer: c
Explanation: Deletion of the first element of the list is done in O (1) time by deleting memory
and changing the first pointer.
Insertion of an element as a first element can be done in O (1) time. We will create a node
that holds data and points to the head of the given linked list. The head pointer was
changed to a newly created node.
Deletion of the last element requires a pointer to the previous node of last, which can only
be obtained by traversing the list. This requires the length of the linked list.
Adding a new element at the end of the list can be done in O (1) by changing the pointer of
the last node to the newly created node and last is changed to a newly created node.

8. In the worst case, the number of comparisons needed to search a singly linked list of
length n for a given element is?
a) log2 n
b) n⁄2
c) log2 n – 1
d) n
View Answer
Answer: d
Explanation: The worst-case happens if the required element is at last or the element is
absent in the list. For this, we need to compare every element in the linked list. If n elements
are there, n comparisons will happen in the worst case.

Data Structure Multiple Choice Questions –


Linked List
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on
“Linked Lists”, covering topics such as linked list operations, singly linked lists, doubly linked
lists, and circular linked lists.

1. Which of the following is not a disadvantage to the usage of array?


a) Fixed size
b) There are chances of wastage of memory space if elements inserted in an array are
lesser than the allocated size
c) Insertion based on position
d) Accessing elements at specified positions
View Answer
Answer: d
Explanation: Array elements can be accessed in two steps. First, multiply the size of the
data type with the specified position, second, add this value to the base address. Both of
these operations can be done in constant time, hence accessing elements at a given
index/position is faster.

2. What is the time complexity of inserting at the end in dynamic arrays?


a) O(1)
b) O(n)
c) O(logn)
d) Either O(1) or O(n)
View Answer
Answer: d
Explanation: Depending on whether the array is full or not, the complexity in dynamic array
varies. If you try to insert into an array that is not full, then the element is simply stored at
the end, this takes O(1) time. If you try to insert into an array which is full, first you will have
to allocate an array with double the size of the current array and then copy all the elements
into it and finally insert the new element, this takes O(n) time.

3. What is the time complexity to count the number of elements in the linked list?
a) O(1)
b) O(n)
c) O(logn)
d) O(n2)
View Answer
Answer: b
Explanation: To count the number of elements, you have to traverse through the entire list,
hence complexity is O(n).
advertisement
ADVERTISEMENT
ADVERTISEMENT

4. Which of the following performs deletion of the last element in the list? Given below is the
Node class.

class Node
{
protected Node next;
protected Object ele;
Node(Object e,Node n)
{
ele = e;
next = n;
}
public void setNext(Node n)
{
next = n;
}
public void setEle(Object e)
{
ele = e;
}
public Node getNext()
{
return next;
}
public Object getEle()
{
return ele;
}
}
class SLL
{
Node head;
int size;
SLL()
{
size = 0;
}
}

a)

Note: Join free Sanfoundry classes at Telegram or Youtube


public Node removeLast()
{
if(size == 0)
return null;
Node cur;
Node temp;
cur = head;
while(cur.getNext() != null)
{
temp = cur;
cur = cur.getNext();
}
temp.setNext(null);
size--;
return cur;
}

b)

public void removeLast()


{
if(size == 0)
return null;
Node cur;
Node temp;
cur = head;
while(cur != null)
{
temp = cur;
cur = cur.getNext();
}
temp.setNext(null);
return cur;
}

c)

public void removeLast()


{
if(size == 0)
return null;
Node cur;
Node temp;
cur = head;
while(cur != null)
{
cur = cur.getNext();
temp = cur;
}
temp.setNext(null);
return cur;
}

d)

public void removeLast()


{
if(size == 0)
return null;
Node cur;
Node temp;
cur = head;
while(cur.getNext() != null)
{
cur = cur.getNext();
temp = cur;
}
temp.setNext(null);
return cur;
}

View Answer
Answer: a
Explanation: Since you have to traverse to the end of the list and delete the last node, you
need two reference pointers. ‘cur’ to traverse all the way and find the last node, and ‘temp’
is a trailing pointer to ‘cur’. Once you reach the end of the list, setNext of ‘temp’ to null, ‘cur’
is not being pointed to by any node, and hence it is available for garbage collection.

5. What is the functionality of the following code?

public void function(Node node)


{
if(size == 0)
head = node;
else
{
Node temp,cur;
for(cur = head; (temp = cur.getNext())!=null; cur = temp);
cur.setNext(node);
}
size++;
}
a) Inserting a node at the beginning of the list
b) Deleting a node at the beginning of the list
c) Inserting a node at the end of the list
d) Deleting a node at the end of the list
View Answer
Answer: c
Explanation: The for loop traverses through the list and then inserts a new node as
cur.setNext(node);

6. What is the space complexity for deleting a linked list?


a) O(1)
b) O(n)
c) Either O(1) or O(n)
d) O(logn)
View Answer
Answer: a
Explanation: You need a temp variable to keep track of current node, hence the space
complexity is O(1).

7. How would you delete a node in the singly linked list? The position to be deleted is given.
a)

public void delete(int pos)


{
if(pos < 0)
pos = 0;
if(pos > size)
pos = size;
if( size == 0)
return;
if(pos == 0)
head = head.getNext();
else
{
Node temp = head;
for(int i=1; i<pos; i++)
{
temp = temp.getNext();
}
temp.setNext(temp.getNext().getNext());
}
size--;
}

b)

public void delete(int pos)


{
if(pos < 0)
pos = 0;
if(pos > size)
pos = size;
if( size == 0)
return;
if(pos == 0)
head = head.getNext();
else
{
Node temp = head;
for(int i=1; i<pos; i++)
{
temp = temp.getNext();
}
temp.setNext(temp.getNext());
}
size--;
}

c)

public void delete(int pos)


{
if(pos < 0)
pos = 0;
if(pos > size)
pos = size;
if( size == 0)
return;
if(pos == 0)
head = head.getNext();
else
{
Node temp = head;
for(int i=1; i<pos; i++)
{
temp = temp.getNext().getNext();
}
temp.setNext(temp.getNext().getNext());
}
size--;
}

d)

public void delete(int pos)


{
if(pos < 0)
pos = 0;
if(pos > size)
pos = size;
if( size == 0)
return;
if(pos == 0)
head = head.getNext();
else
{
Node temp = head;
for(int i=0; i<pos; i++)
{
temp = temp.getNext();
}
temp.setNext(temp.getNext().getNext());
}
size--;
}

View Answer
Answer: a
Explanation: Loop through the list to get into position one behind the actual position given.
temp.setNext(temp.getNext().getNext()) will delete the specified node.

8. Which of these is not an application of a linked list?


a) To implement file systems
b) For separate chaining in hash-tables
c) To implement non-binary trees
d) Random Access of elements
View Answer
Answer: d
Explanation: To implement file system, for separate chaining in hash-tables and to
implement non-binary trees linked lists are used. Elements are accessed sequentially in
linked list. Random access of elements is not an applications of linked list.

9. Which of the following piece of code has the functionality of counting the number of
elements in the list?
a)

public int length(Node head)


{
int size = 0;
Node cur = head;
while(cur!=null)
{
size++;
cur = cur.getNext();
}
return size;
}

b)

public int length(Node head)


{
int size = 0;
Node cur = head;
while(cur!=null)
{
cur = cur.getNext();
size++;
}
return size;
}

c)

public int length(Node head)


{
int size = 0;
Node cur = head;
while(cur!=null)
{
size++;
cur = cur.getNext();
}
}

d)

public int length(Node head)


{
int size = 0;
Node cur = head;
while(cur!=null)
{
size++;
cur = cur.getNext().getNext();
}
return size;
}

View Answer
Answer: a
Explanation: ‘cur’ pointer traverses through list and increments the size variable until the
end of list is reached.

10. How do you insert an element at the beginning of the list?


a)

public void insertBegin(Node node)


{
node.setNext(head);
head = node;
size++;
}

b)

public void insertBegin(Node node)


{
head = node;
node.setNext(head);
size++;
}
c)

public void insertBegin(Node node)


{
Node temp = head.getNext()
node.setNext(temp);
head = node;
size++;
}

d)

public void insertBegin(Node node)


{
Node temp = head.getNext()
node.setNext(temp);
node = head;
size++;
}

View Answer
Answer: a
Explanation: Set the ‘next’ pointer point to the head of the list and then make this new node
as the head.

11. What is the functionality of the following piece of code?

public int function(int data)


{
Node temp = head;
int var = 0;
while(temp != null)
{
if(temp.getData() == data)
{
return var;
}
var = var+1;
temp = temp.getNext();
}
return Integer.MIN_VALUE;
}

a) Find and delete a given element in the list


b) Find and return the given element in the list
c) Find and return the position of the given element in the list
d) Find and insert a new element in the list
View Answer
Answer: c
Explanation: When temp is equal to data, the position of data is returned.
Data Structure Questions and Answers –
Doubly Linked List
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on
“Doubly Linked List”.

1. Which of the following is false about a doubly linked list?


a) We can navigate in both the directions
b) It requires more space than a singly linked list
c) The insertion and deletion of a node take a bit longer
d) Implementing a doubly linked list is easier than singly linked list
View Answer
Answer: d
Explanation: A doubly linked list has two pointers ‘left’ and ‘right’ which enable it to traverse
in either direction. Compared to singly liked list which has only a ‘next’ pointer, doubly linked
list requires extra space to store this extra pointer. Every insertion and deletion requires
manipulation of two pointers, hence it takes a bit longer time. Implementing doubly linked
list involves setting both left and right pointers to correct nodes and takes more time than
singly linked list.

2. Given the Node class implementation, select one of the following that correctly inserts a
node at the tail of the list.

public class Node


{
protected int data;
protected Node prev;
protected Node next;
public Node(int data)
{
this.data = data;
prev = null;
next = null;
}
public Node(int data, Node prev, Node next)
{
this.data = data;
this.prev = prev;
this.next = next;
}
public int getData()
{
return data;
}
public void setData(int data)
{
this.data = data;
}
public Node getPrev()
{
return prev;
}
public void setPrev(Node prev)
{
this.prev = prev;
}
public Node getNext
{
return next;
}
public void setNext(Node next)
{
this.next = next;
}
}
public class DLL
{
protected Node head;
protected Node tail;
int length;
public DLL()
{
head = new Node(Integer.MIN_VALUE,null,null);
tail = new Node(Integer.MIN_VALUE,null,null);
head.setNext(tail);
length = 0;
}
}

a)

advertisement
ADVERTISEMENT
ADVERTISEMENT
public void insertRear(int data)
{
Node node = new Node(data,tail.getPrev(),tail);
node.getPrev().setNext(node);
tail.setPrev(node);
length++;
}

b)

Note: Join free Sanfoundry classes at Telegram or Youtube


public void insertRear(int data)
{
Node node = new Node(data,tail.getPrev(),tail);
node.getPrev().getPrev().setNext(node);
tail.setPrev(node);
length++;
}

c)
public void insertRear(int data)
{
Node node = new Node(data,tail.getPrev(),tail);
node.getPrev().setNext(tail);
tail.setPrev(node);
length++;
}

d)

public void insertRear(int data)


{
Node node = new Node(data,head,tail);
node.getPrev().setNext(node);
tail.setPrev(node);
length++;
}

View Answer
Answer: a
Explanation: First create a new node whose ‘prev’ points to the node pointed to by the ‘prev’
of tail. The ‘next’ of the new node should point to tail. Set the ‘prev’ of tail to point to new
node and the ‘prev’ of new node to point to the new node.

3. What is a memory efficient double linked list?


a) Each node has only one pointer to traverse the list back and forth
b) The list has breakpoints for faster traversal
c) An auxiliary singly linked list acts as a helper list to traverse through the doubly linked list
d) A doubly linked list that uses bitwise AND operator for storing addresses
View Answer
Answer: a
Explanation: Memory efficient doubly linked list has only one pointer to traverse the list back
and forth. The implementation is based on pointer difference. It uses bitwise XOR operator
to store the front and rear pointer addresses. Instead of storing actual memory address,
every node store the XOR address of previous and next nodes.

4. Which of the following piece of code removes the node from a given position?
a)

public void remove(int pos)


{
if(pos<0 || pos>=size)
{
System.out.println("Invalid position");
return;
}
else
{
if(head == null)
return;
if(pos == 0)
{
head = head.getNext();
if(head == null)
tail = null;
}
else
{
Node temp = head;
for(int i=1; i<position; i++)
temp = temp.getNext();
}
temp.getNext().setPrev(temp.getPrev());
temp.getPrev().setNext(temp.getNext());
}
size--;
}

b)

public void remove(int pos)


{
if(pos<0 || pos>=size)
{
System.out.println("Invalid position");
return;
}
else
{
if(head == null)
return;
if(pos == 0)
{
head = head.getNext();
if(head == null)
tail = null;
}
else
{
Node temp = head;
for(int i=1; i<position; i++)
temp = temp.getNext();
}
temp.getNext().setPrev(temp.getNext());
temp.getPrev().setNext(temp.getPrev());
}
size--;
}

c)

public void remove(int pos)


{
if(pos<0 || pos>=size)
{
System.out.println("Invalid position");
return;
}
else
{
if(head == null)
return;
if(pos == 0)
{
head = head.getNext();
if(head == null)
tail = null;
}
else
{
Node temp = head;
for(int i=1; i<position; i++)
temp = temp.getNext().getNext();
}
temp.getNext().setPrev(temp.getPrev());
temp.getPrev().setNext(temp.getNext());
}
size--;
}

d)

public void remove(int pos)


{
if(pos<0 || pos>=size)
{
System.out.println("Invalid position");
return;
}
else
{
if(head == null)
return;
if(pos == 0)
{
head = head.getNext();
if(head == null)
tail = null;
}
else
{
Node temp = head;
for(int i=1; i<position; i++)
temp = temp.getNext().getNext();
}
temp.getNext().setPrev(temp.getNext());
temp.getPrev().setNext(temp.getPrev());
}
size--;
}

View Answer
Answer: a
Explanation: If the position to be deleted is not the head, advance to the given position and
manipulate the previous and next pointers of next and previous nodes respectively.

5. How do you calculate the pointer difference in a memory efficient double linked list?
a) head xor tail
b) pointer to previous node xor pointer to next node
c) pointer to previous node – pointer to next node
d) pointer to next node – pointer to previous node
View Answer
Answer: b
Explanation: The pointer difference is calculated by taking XOR of pointer to previous node
and pointer to the next node.

6. What is the worst case time complexity of inserting a node in a doubly linked list?
a) O(nlogn)
b) O(logn)
c) O(n)
d) O(1)
View Answer
Answer: c
Explanation: In the worst case, the position to be inserted maybe at the end of the list,
hence you have to traverse through the entire list to get to the correct position, hence O(n).

7. How do you insert a node at the beginning of the list?


a)

public class insertFront(int data)


{
Node node = new Node(data, head, head.getNext());
node.getNext().setPrev(node);
head.setNext(node);
size++;
}

b)

public class insertFront(int data)


{
Node node = new Node(data, head, head);
node.getNext().setPrev(node);
head.setNext(node);
size++;
}

c)

public class insertFront(int data)


{
Node node = new Node(data, head, head.getNext());
node.getNext().setPrev(head);
head.setNext(node);
size++;
}

d)

public class insertFront(int data)


{
Node node = new Node(data, head, head.getNext());
node.getNext().setPrev(node);
head.setNext(node.getNext());
size++;
}

View Answer
Answer: a
Explanation: The new node’s previous pointer will point to head and next pointer will point to
the current next of head.

8. Consider the following doubly linked list: head-1-2-3-4-5-tail. What will be the list after
performing the given sequence of operations?

Node temp = new Node(6,head,head.getNext());


Node temp1 = new Node(0,tail.getPrev(),tail);
head.setNext(temp);
temp.getNext().setPrev(temp);
tail.setPrev(temp1);
temp1.getPrev().setNext(temp1);

a) head-0-1-2-3-4-5-6-tail
b) head-1-2-3-4-5-6-tail
c) head-6-1-2-3-4-5-0-tail
d) head-0-1-2-3-4-5-tail
View Answer
Answer: c
Explanation: The given sequence of operations performs addition of nodes at the head and
tail of the list.

9. What is the functionality of the following piece of code?

public int function()


{
Node temp = tail.getPrev();
tail.setPrev(temp.getPrev());
temp.getPrev().setNext(tail);
size--;
return temp.getItem();
}
a) Return the element at the tail of the list but do not remove it
b) Return the element at the tail of the list and remove it from the list
c) Return the last but one element from the list but do not remove it
d) Return the last but one element at the tail of the list and remove it from the list
View Answer
Answer: b
Explanation: The previous and next pointers of the tail and the last but one element are
manipulated, this suggests that the last node is being removed from the list.

10. Consider the following doubly linked list: head-1-2-3-4-5-tail. What will be the list after
performing the given sequence of operations?

Node temp = new Node(6,head,head.getNext());


head.setNext(temp);
temp.getNext().setPrev(temp);
Node temp1 = tail.getPrev();
tail.setPrev(temp1.getPrev());
temp1.getPrev().setNext(tail);

a) head-6-1-2-3-4-5-tail
b) head-6-1-2-3-4-tail
c) head-1-2-3-4-5-6-tail
d) head-1-2-3-4-5-tail
View Answer
Answer: b
Explanation: A new node is added to the head of the list and a node is deleted from the tail
end of the list.

Data Structure Questions and Answers –


Circular Linked List
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on
“Circular Linked List”.

1. What differentiates a circular linked list from a normal linked list?


a) You cannot have the ‘next’ pointer point to null in a circular linked list
b) It is faster to traverse the circular linked list
c) You may or may not have the ‘next’ pointer point to null in a circular linked list
d) Head node is known in circular linked list
View Answer
Answer: c
Explanation: The ‘next’ pointer points to null only when the list is empty, otherwise it points
to the head of the list. Every node in a circular linked list can be a starting point(head).

2. How do you count the number of elements in the circular linked list?
a)

public int length(Node head)


{
int length = 0;
if( head == null)
return 0;
Node temp = head.getNext();
while(temp != head)
{
temp = temp.getNext();
length++;
}
return length;
}

b)

advertisement
public int length(Node head)
{
int length = 0;
if( head == null)
return 0;
Node temp = head.getNext();
while(temp != null)
{
temp = temp.getNext();
length++;
}
return length;
}

c)

Note: Join free Sanfoundry classes at Telegram or Youtube


public int length(Node head)
{
int length = 0;
if( head == null)
return 0;
Node temp = head.getNext();
while(temp != head && temp != null)
{
temp = head.getNext();
length++;
}
return length;
}

d)

public int length(Node head)


{
int length = 0;
if( head == null)
return 0;
Node temp = head.getNext();
while(temp != head && temp == null)
{
temp = head.getNext();
length++;
}
return length;
}

View Answer
Answer: a
Explanation: If the head is null, it means that the list is empty. Otherwise, traverse the list
until the head of the list is reached.

3. What is the functionality of the following piece of code? Select the most appropriate.

public void function(int data)


{
int flag = 0;
if( head != null)
{
Node temp = head.getNext();
while((temp != head) && (!(temp.getItem() == data)))
{
temp = temp.getNext();
flag = 1;
break;
}
}
if(flag)
System.out.println("success");
else
System.out.println("fail");
}

a) Print success if a particular element is not found


b) Print fail if a particular element is not found
c) Print success if a particular element is equal to 1
d) Print fail if the list is empty
View Answer
Answer: b
Explanation: The function prints fail if the given element is not found. Note that this option is
inclusive of option “Print fail if the list is empty”, the list being empty is one of the cases
covered.

4. What is the time complexity of searching for an element in a circular linked list?
a) O(n)
b) O(nlogn)
c) O(1)
d) O(n2)
View Answer
Answer: a
Explanation: In the worst case, you have to traverse through the entire list of n elements.
5. Which of the following application makes use of a circular linked list?
a) Undo operation in a text editor
b) Recursive function calls
c) Allocating CPU to resources
d) Implement Hash Tables
View Answer
Answer: c
Explanation: Generally, round robin fashion is employed to allocate CPU time to resources
which makes use of the circular linked list data structure. Recursive function calls use stack
data structure. Undo Operation in text editor uses doubly linked lists. Hash tables uses
singly linked lists.

6. Choose the code snippet which inserts a node to the head of the list?
a)

public void insertHead(int data)


{
Node temp = new Node(data);
Node cur = head;
while(cur.getNext() != head)
cur = cur.getNext()
if(head == null)
{
head = temp;
head.setNext(head);
}
else
{
temp.setNext(head);
head = temp;
cur.setNext(temp);
}
size++;
}

b)

public void insertHead(int data)


{
Node temp = new Node(data);
while(cur != head)
cur = cur.getNext()
if(head == null)
{
head = temp;
head.setNext(head);
}
else
{
temp.setNext(head.getNext());
cur.setNext(temp);
}
size++;
}
c)

public void insertHead(int data)


{
Node temp = new Node(data);
if(head == null)
{
head = temp;
head.setNext(head);
}
else
{
temp.setNext(head.getNext());
head = temp;
}
size++;
}

d)

public void insertHead(int data)


{
Node temp = new Node(data);
if(head == null)
{
head = temp;
head.setNext(head.getNext());
}
else
{
temp.setNext(head.getNext());
head = temp;
}
size++;
}

View Answer
Answer: a
Explanation: If the list is empty make the new node as ‘head’, otherwise traverse the list to
the end and make its ‘next’ pointer point to the new node, set the new node’s next point to
the current head and make the new node as the head.

7. What is the functionality of the following code? Choose the most appropriate answer.

public int function()


{
if(head == null)
return Integer.MIN_VALUE;
int var;
Node temp = head;
while(temp.getNext() != head)
temp = temp.getNext();
if(temp == head)
{
var = head.getItem();
head = null;
return var;
}
temp.setNext(head.getNext());
var = head.getItem();
head = head.getNext();
return var;
}

a) Return data from the end of the list


b) Returns the data and deletes the node at the end of the list
c) Returns the data from the beginning of the list
d) Returns the data and deletes the node from the beginning of the list
View Answer
Answer: d
Explanation: First traverse through the list to find the end node, then manipulate the ‘next’
pointer such that it points to the current head’s next node, return the data stored in head
and make this next node as the head.

8. What is the functionality of the following code? Choose the most appropriate answer.

public int function()


{
if(head == null)
return Integer.MIN_VALUE;
int var;
Node temp = head;
Node cur;
while(temp.getNext() != head)
{
cur = temp;
temp = temp.getNext();
}
if(temp == head)
{
var = head.getItem();
head = null;
return var;
}
var = temp.getItem();
cur.setNext(head);
return var;
}

a) Return data from the end of the list


b) Returns the data and deletes the node at the end of the list
c) Returns the data from the beginning of the list
d) Returns the data and deletes the node from the beginning of the list
View Answer
Answer: b
Explanation: First traverse through the list to find the end node, also have a trailing pointer
to find the penultimate node, make this trailing pointer’s ‘next’ point to the head and return
the data stored in the ‘temp’ node.

9. Which of the following is false about a circular linked list?


a) Every node has a successor
b) Time complexity of inserting a new node at the head of the list is O(1)
c) Time complexity for deleting the last node is O(n)
d) We can traverse the whole circular linked list by starting from any point
View Answer
Answer: b
Explanation: Time complexity of inserting a new node at the head of the list is O(n) because
you have to traverse through the list to find the tail node.

10. Consider a small circular linked list. How to detect the presence of cycles in this list
effectively?
a) Keep one node as head and traverse another temp node till the end to check if its ‘next
points to head
b) Have fast and slow pointers with the fast pointer advancing two nodes at a time and slow
pointer advancing by one node at a time
c) Cannot determine, you have to pre-define if the list contains cycles
d) Circular linked list itself represents a cycle. So no new cycles cannot be generated
View Answer
Answer: b
Explanation: Advance the pointers in such a way that the fast pointer advances two nodes
at a time and slow pointer advances one node at a time and check to see if at any given
instant of time if the fast pointer points to slow pointer or if the fast pointer’s ‘next’ points to
the slow pointer. This is applicable for smaller lists.

Data Structure Questions and Answers –


Stack using Array
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on “Stack
using Array”.

1. Which of the following real world scenarios would you associate with a stack data
structure?
a) piling up of chairs one above the other
b) people standing in a line to be serviced at a counter
c) offer services based on the priority of the customer
d) tatkal Ticket Booking in IRCTC
View Answer
Answer: a
Explanation: Stack follows Last In First Out (LIFO) policy. Piling up of chairs one above the
other is based on LIFO, people standing in a line is a queue and if the service is based on
priority, then it can be associated with a priority queue. Tatkal Ticket Booking Follows First
in First Out Policy. People who click the book now first will enter the booking page first.

2. What does the following function check for? (all necessary headers to be included and
function is called from main)
#define MAX 10

typedef struct stack


{
int top;
int item[MAX];
}stack;

int function(stack *s)


{
if(s->top == -1)
return 1;
else return 0;
}

a) full stack
b) invalid index
c) empty stack
d) infinite stack
View Answer
Answer: c
Explanation: An empty stack is represented with the top-of-the-stack(‘top’ in this case) to be
equal to -1.
advertisement
ADVERTISEMENT
ADVERTISEMENT

3. What does ‘stack underflow’ refer to?


a) accessing item from an undefined stack
b) adding items to a full stack
c) removing items from an empty stack
d) index out of bounds exception
View Answer
Answer: c
Explanation: Removing items from an empty stack is termed as stack underflow.

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!

4. What is the output of the following program?

public class Stack


{
protected static final int CAPACITY = 100;
protected int size,top = -1;
protected Object stk[];

public Stack()
{
stk = new Object[CAPACITY];
}
public void push(Object item)
{
if(size_of_stack==size)
{
System.out.println("Stack overflow");
return;
}
else
{
top++;
stk[top]=item;
}
}
public Object pop()
{
if(top<0)
{
return -999;
}
else
{
Object ele=stk[top];
top--;
size_of_stack--;
return ele;
}
}
}

public class StackDemo


{
public static void main(String args[])
{
Stack myStack = new Stack();
myStack.push(10);
Object element1 = myStack.pop();
Object element2 = myStack.pop();
System.out.println(element2);
}
}

a) stack is full
b) 20
c) 0
d) -999
View Answer
Answer: d
Explanation: The first call to pop() returns 10, whereas the second call to pop() would result
in stack underflow and the program returns -999.

5. What is the time complexity of pop() operation when the stack is implemented using an
array?
a) O(1)
b) O(n)
c) O(logn)
d) O(nlogn)
View Answer
Answer: a
Explanation: pop() accesses only one end of the structure, and hence constant time.

6. Which of the following array position will be occupied by a new element being pushed for
a stack of size N elements(capacity of stack > N)?
a) S[N-1]
b) S[N]
c) S[1]
d) S[0]
View Answer
Answer: b
Explanation: Elements are pushed at the end, hence N.

7. What happens when you pop from an empty stack while implementing using the Stack
ADT in Java?
a) Undefined error
b) Compiler displays a warning
c) EmptyStackException is thrown
d) NoStackException is thrown
View Answer
Answer: c
Explanation: The Stack ADT throws an EmptyStackException if the stack is empty and a
pop() operation is tried on it.

8. What is the functionality of the following piece of Java code?


Assume: ‘a’ is a non empty array of integers, the Stack class creates an array of specified
size and provides a top pointer indicating TOS(top of stack), push and pop have normal
meaning.

public void some_function(int[] a)


{
Stack S=new Stack(a.length);
int[] b=new int[a.length];
for(int i=0;i<a.length;i++)
{
S.push(a[i]);
}
for(int i=0;i<a.length;i++)
{
b[i]=(int)(S.pop());
}
System.out.println("output :");
for(int i=0;i<b.length;i++)
{
System.out.println(b[i]);
}
}

a) print alternate elements of array


b) duplicate the given array
c) parentheses matching
d) reverse the array
View Answer
Answer: d
Explanation: Every element from the given array ‘a’ is pushed into the stack, and then the
elements are popped out into the array ‘b’. Stack is a LIFO structure, this results in
reversing the given array.

9. Array implementation of Stack is not dynamic, which of the following statements supports
this argument?
a) space allocation for array is fixed and cannot be changed during run-time
b) user unable to give the input for stack operations
c) a runtime exception halts execution
d) improper program compilation
View Answer
Answer: a
Explanation: You cannot modify the size of an array once the memory has been allocated,
adding fewer elements than the array size would cause wastage of space, and adding more
elements than the array size at run time would cause Stack Overflow.

10. Which of the following array element will return the top-of-the-stack-element for a stack
of size N elements(capacity of stack > N)?
a) S[N-1]
b) S[N]
c) S[N-2]
d) S[N+1]
View Answer
Answer: a
Explanation: Array indexing start from 0, hence N-1 is the last index.

Data Structure Questions and Answers –


Stack using Linked List
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on “Stack
using Linked List”.

1. What is the best case time complexity of deleting a node in a Singly Linked list?
a) O (n)
b) O (n2)
c) O (nlogn)
d) O (1)
View Answer
Answer: d
Explanation: Deletion of the head node in the linked list is taken as the best case. The
successor of the head node is changed to head and deletes the predecessor of the newly
assigned head node. This process completes in O(1) time.
2. Which of the following statements are not correct with respect to Singly Linked List(SLL)
and Doubly Linked List(DLL)?
a) Complexity of Insertion and Deletion at known position is O(n) in SLL and O(1) in DLL
b) SLL uses lesser memory per node than DLL
c) DLL has more searching power than SLL
d) Number of node fields in SLL is more than DLL
View Answer
Answer: d
Explanation: To insert and delete at known positions requires complete traversal of the list
in worst case in SLL, SLL consists of an item and a node field, while DLL has an item and
two node fields, hence SLL occupies lesser memory, DLL can be traversed both ways(left
and right), while SLL can traverse in only one direction, hence more searching power of
DLL. Node fields in SLL is 2 (data and address of next node) whereas in DLL is 3(data,
address to next node, address to previous node).

3. Given below is the Node class to perform basic list operations and a Stack class with a
no arg constructor.
Select from the options the appropriate pop() operation that can be included in the Stack
class. Also ‘first’ is the top-of-the-stack.

advertisement
class Node
{
protected Node next;
protected Object ele;
Node()
{
this(null,null);
}
Node(Object e,Node n)
{
ele=e;
next=n;
}
public void setNext(Node n)
{
next=n;
}
public void setEle(Object e)
{
ele=e;
}
public Node getNext()
{
return next;
}
public Object getEle()
{
return ele;
}
}

class Stack
{
Node first;
int size=0;
Stack()
{
first=null;
}
}

a)

Note: Join free Sanfoundry classes at Telegram or Youtube


public Object pop()
{
if(size == 0)
System.out.println("underflow");
else
{
Object o = first.getEle();
first = first.getNext();
size--;
return o;
}
}

b)

public Object pop()


{
if(size == 0)
System.out.println("underflow");
else
{
Object o = first.getEle();
first = first.getNext().getNext();
size--;
return o;
}
}

c)

public Object pop()


{
if(size == 0)
System.out.println("underflow");
else
{
first = first.getNext();
Object o = first.getEle();
size--;
return o;
}
}
d)

public Object pop()


{
if(size == 0)
System.out.println("underflow");
else
{
first = first.getNext().getNext();
Object o = first.getEle();
size--;
return o;
}
}

View Answer
Answer: a
Explanation: pop() should return the Object pointed to by the node ‘first’. The sequence of
operations is, first, get the element stored at node ‘first’ using getEle(), and second, make
the node point to the next node using getNext().

4. What does the following function do?

public Object some_func()throws emptyStackException


{
if(isEmpty())
throw new emptyStackException("underflow");
return first.getEle();
}

a) pop
b) delete the top-of-the-stack element
c) retrieve the top-of-the-stack element
d) push operation
View Answer
Answer: c
Explanation: This code is only retrieving the top element, note that it is not equivalent to pop
operation as you are not setting the ‘next’ pointer point to the next node in sequence.

5. What is the functionality of the following piece of code?

public void display()


{
if(size == 0)
System.out.println("underflow");
else
{
Node current = first;
while(current != null)
{
System.out.println(current.getEle());
current = current.getNext();
}
}
}

a) reverse the list


b) display the list
c) display the list excluding top-of-the-stack-element
d) reverse the list excluding top-of-the-stack-element
View Answer
Answer: b
Explanation: An alias of the node ‘first’ is created which traverses through the list and
displays the elements.

6. What does ‘stack overflow’ refer to?


a) accessing item from an undefined stack
b) adding items to a full stack
c) removing items from an empty stack
d) index out of bounds exception
View Answer
Answer: b
Explanation: Adding items to a full stack is termed as stack underflow.

7. Given below is the Node class to perform basic list operations and a Stack class with a
no arg constructor. Select from the options the appropriate push() operation that can be
included in the Stack class. Also ‘first’ is the top-of-the-stack.

class Node
{
protected Node next;
protected Object ele;
Node()
{
this(null,null);
}
Node(Object e,Node n)
{
ele=e;
next=n;
}
public void setNext(Node n)
{
next=n;
}
public void setEle(Object e)
{
ele=e;
}
public Node getNext()
{
return next;
}
public Object getEle()
{
return ele;
}
}

class Stack
{
Node first;
int size=0;
Stack()
{
first=null;
}
}

a)

public void push(Object item)


{
Node temp = new Node(item,first);
first = temp;
size++;
}

b)

public void push(Object item)


{
Node temp = new Node(item,first);
first = temp.getNext();
size++;
}

c)

public void push(Object item)


{
Node temp = new Node();
first = temp.getNext();
first.setItem(item);
size++;
}

d)

public void push(Object item)


{
Node temp = new Node();
first = temp.getNext.getNext();
first.setItem(item);
size++;
}

View Answer
Answer: a
Explanation: To push an element into the stack, first create a new node with the next pointer
point to the current top-of-the-stack node, then make this node as top-of-the-stack by
assigning it to ‘first’.

8. Consider these functions:


push() : push an element into the stack
pop() : pop the top-of-the-stack element
top() : returns the item stored in top-of-the-stack-node
What will be the output after performing these sequence of operations

push(20);
push(4);
top();
pop();
pop();
push(5);
top();

a) 20
b) 4
c) stack underflow
d) 5
View Answer
Answer: d
Explanation: 20 and 4 which were pushed are popped by the two pop() statements, the
recent push() is 5, hence top() returns 5.

9. Which of the following data structures can be used for parentheses matching?
a) n-ary tree
b) queue
c) priority queue
d) stack
View Answer
Answer: d
Explanation: For every opening brace, push it into the stack, and for every closing brace,
pop it off the stack. Do not take action for any other character. In the end, if the stack is
empty, then the input has balanced parentheses.

10. Minimum number of queues to implement stack is ___________


a) 3
b) 4
c) 1
d) 2
View Answer
Answer: c
Explanation: Use one queue and one counter to count the number of elements in the
queue.
Data Structure Questions and Answers –
Queue using Array
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on
“Queue using Array”.

1. Which of the following properties is associated with a queue?


a) First In Last Out
b) First In First Out
c) Last In First Out
d) Last In Last Out
View Answer
Answer: b
Explanation: Queue follows First In First Out structure.

2. In a circular queue, how do you increment the rear end of the queue?
a) rear++
b) (rear+1) % CAPACITY
c) (rear % CAPACITY)+1
d) rear–
View Answer
Answer: b
Explanation: Ensures rear takes the values from 0 to (CAPACITY-1).

3. What is the term for inserting into a full queue known as?
a) overflow
b) underflow
c) null pointer exception
d) program won’t be compiled
View Answer
Answer: a
Explanation: Just as stack, inserting into a full queue is termed overflow.
advertisement
4. What is the time complexity of enqueue operation?
a) O(logn)
b) O(nlogn)
c) O(n)
d) O(1)
View Answer
Answer: d
Explanation: Enqueue operation is at the rear end, it takes O(1) time to insert a new item
into the queue.

5. What does the following Java code do?

Subscribe Now: Data Structure Newsletter | Important Subjects Newsletters


public Object function()
{
if(isEmpty())
return -999;
else
{
Object high;
high = q[front];
return high;
}
}

a) Dequeue
b) Enqueue
c) Return the front element
d) Return the last element
View Answer
Answer: c
Explanation: q[front] gives the element at the front of the queue, since we are not moving
the ‘front’ to the next element,
it is not a dequeue operation.

6. What is the need for a circular queue?


a) effective usage of memory
b) easier computations
c) to delete elements based on priority
d) implement LIFO principle in queues
View Answer
Answer: a
Explanation: In a linear queue, dequeue operation causes the starting elements of the array
to be empty, and there is no way you can use that space, while in a circular queue, you can
effectively use that space. Priority queue is used to delete the elements based on their
priority. Higher priority elements will be deleted first whereas lower priority elements will be
deleted next. Queue data structure always follows FIFO principle.

7. Which of the following represents a dequeue operation? (count is the number of elements
in the queue)
a)

public Object dequeue()


{
if(count == 0)
{
System.out.println("Queue underflow");
return 0;
}
else
{
Object ele = q[front];
q[front] = null;
front = (front+1)%CAPACITY;
count--;
return ele;
}
}

b)

public Object dequeue()


{
if(count == 0)
{
System.out.println("Queue underflow");
return 0;
}
else
{
Object ele = q[front];
front = (front+1)%CAPACITY;
q[front] = null;
count--;
return ele;
}
}

c)

public Object dequeue()


{
if(count == 0)
{
System.out.println("Queue underflow");
return 0;
}
else
{
front = (front+1)%CAPACITY;
Object ele = q[front];
q[front] = null;
count--;
return ele;
}
}

d)

public Object dequeue()


{
if(count == 0)
{
System.out.println("Queue underflow");
return 0;
}
else
{
Object ele = q[front];
q[front] = null;
front = (front+1)%CAPACITY;
return ele;
count--;
}
}

View Answer
Answer: a
Explanation: Dequeue removes the first element from the queue, ‘front’ points to the front
end of the queue and returns the first element.

8. Which of the following best describes the growth of a linear queue at runtime? (Q is the
original queue, size() returns the number of elements in the queue)
a)

private void expand()


{
int length = size();
int[] newQ = new int[length<<1];
for(int i=front; i<=rear; i++)
{
newQ[i-front] = Q[i%CAPACITY];
}
Q = newQ;
front = 0;
rear = size()-1;
}

b)

private void expand()


{
int length = size();
int[] newQ = new int[length<<1];
for(int i=front; i<=rear; i++)
{
newQ[i-front] = Q[i%CAPACITY];
}
Q = newQ;
}

c)

private void expand()


{
int length = size();
int[] newQ = new int[length<<1];
for(int i=front; i<=rear; i++)
{
newQ[i-front] = Q[i];
}
Q = newQ;
front = 0;
rear = size()-1;
}

d)

private void expand()


{
int length = size();
int[] newQ = new int[length*2];
for(int i=front; i<=rear; i++)
{
newQ[i-front] = Q[i%CAPACITY];
}
Q = newQ;
}

View Answer
Answer: a
Explanation: A common technique to expand the size of array at run time is simply to
double the size. Create a new array of double the previous size and copy all the elements,
after copying do not forget to assign front = 0 and rear = size()-1, as these are necessary to
maintain the decorum of the queue operations.

9. What is the space complexity of a linear queue having n elements?


a) O(n)
b) O(nlogn)
c) O(logn)
d) O(1)
View Answer
Answer: a
Explanation: The space complexity of an algorithm is the total space taken by the algorithm
with respect to the input size. Space complexity includes both Auxiliary space and space
used by input. Because there are n elements the space complexity of a linear queue having
n elements is O(n).

10. What is the output of the following Java code?

public class CircularQueue


{
protected static final int CAPACITY = 100;
protected int size,front,rear;
protected Object q[];
int count = 0;

public CircularQueue()
{
this(CAPACITY);
}
public CircularQueue (int n)
{
size = n;
front = 0;
rear = 0;
q = new Object[size];
}

public void enqueue(Object item)


{
if(count == size)
{
System.out.println("Queue overflow");
return;
}
else
{
q[rear] = item;
rear = (rear+1)%size;
count++;
}
}
public Object dequeue()
{
if(count == 0)
{
System.out.println("Queue underflow");
return 0;
}
else
{
Object ele = q[front];
q[front] = null;
front = (front+1)%size;
count--;
return ele;
}
}
public Object frontElement()
{
if(count == 0)
return -999;
else
{
Object high;
high = q[front];
return high;
}
}
public Object rearElement()
{
if(count == 0)
return -999;
else
{
Object low;
rear = (rear-1)%size;
low = q[rear];
rear = (rear+1)%size;
return low;
}
}
}
public class CircularQueueDemo
{
public static void main(String args[])
{
Object var;
CircularQueue myQ = new CircularQueue();
myQ.enqueue(10);
myQ.enqueue(3);
var = myQ.rearElement();
myQ.dequeue();
myQ.enqueue(6);
var = mQ.frontElement();
System.out.println(var+" "+var);
}
}

a) 3 3
b) 3 6
c) 6 6
d) 10 6
View Answer
Answer: a
Explanation: First enqueue 10 and 3 into the queue, followed by a dequeue(removes 10),
followed by an enqueue(6), At this point, 3 is at the front end of the queue and 6 at the rear
end, hence a call to frontElement() will return 3 which is displayed twice.

Data Structure Questions and Answers –


Queue using Linked List
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on
“Queue using Linked List”.

1. In linked list implementation of queue, if only front pointer is maintained, which of the
following operation take worst case linear time?
a) Insertion
b) Deletion
c) To empty a queue
d) Both Insertion and To empty a queue
View Answer
Answer: d
Explanation: Since front pointer is used for deletion, so worst time for the other two cases.

2. In linked list implementation of a queue, where does a new element be inserted?


a) At the head of link list
b) At the centre position in the link list
c) At the tail of the link list
d) At any position in the linked list
View Answer
Answer: c
Explanation: Since queue follows FIFO so new element inserted at last.

3. In linked list implementation of a queue, front and rear pointers are tracked. Which of
these pointers will change during an insertion into a NONEMPTY queue?
a) Only front pointer
b) Only rear pointer
c) Both front and rear pointer
d) No pointer will be changed
View Answer
Answer: b
Explanation: Since queue follows FIFO so new element inserted at last.
advertisement
ADVERTISEMENT
ADVERTISEMENT

4. In linked list implementation of a queue, front and rear pointers are tracked. Which of
these pointers will change during an insertion into EMPTY queue?
a) Only front pointer
b) Only rear pointer
c) Both front and rear pointer
d) No pointer will be changed
View Answer
Answer: c
Explanation: Since its the starting of queue, so both values are changed.

5. In case of insertion into a linked queue, a node borrowed from the __________ list is
inserted in the queue.
a) AVAIL
b) FRONT
c) REAR
d) NULL
View Answer
Answer: a
Explanation: All the nodes are collected in AVAIL list.

Subscribe Now: Data Structure Newsletter | Important Subjects Newsletters

6. In linked list implementation of a queue, from where is the item deleted?


a) At the head of link list
b) At the centre position in the link list
c) At the tail of the link list
d) Node before the tail
View Answer
Answer: a
Explanation: Since queue follows FIFO so new element deleted from first.
7. In linked list implementation of a queue, the important condition for a queue to be empty
is?
a) FRONT is null
b) REAR is null
c) LINK is empty
d) FRONT==REAR-1
View Answer
Answer: a
Explanation: Because front represents the deleted nodes.

8. The essential condition which is checked before insertion in a linked queue is?
a) Underflow
b) Overflow
c) Front value
d) Rear value
View Answer
Answer: b
Explanation: To check whether there is space in the queue or not.

9. The essential condition which is checked before deletion in a linked queue is?
a) Underflow
b) Overflow
c) Front value
d) Rear value
View Answer
Answer: a
Explanation: To check whether there is element in the list or not.

10. Which of the following is true about linked list implementation of queue?
a) In push operation, if new nodes are inserted at the beginning of linked list, then in pop
operation, nodes must be removed from end
b) In push operation, if new nodes are inserted at the beginning, then in pop operation,
nodes must be removed from the beginning
c) In push operation, if new nodes are inserted at the end, then in pop operation, nodes
must be removed from end
d) In push operation, if new nodes are inserted at the end, then in pop operation, nodes
must be removed from beginning
View Answer
Answer: a
Explanation: It can be done by both the methods.

Data Structure Questions and Answers –


Priority Queue
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on
“Priority Queue”.

1. With what data structure can a priority queue be implemented?


a) Array
b) List
c) Heap
d) Tree
View Answer
Answer: c
Explanation: Priority queue can be implemented using an array, a list, a binary search tree
or a heap, although the most efficient one being the heap.

2. Which of the following is not an application of priority queue?


a) Huffman codes
b) Interrupt handling in operating system
c) Undo operation in text editors
d) Bayesian spam filter
View Answer
Answer: c
Explanation: Undo operation is achieved using a stack.

3. Select the appropriate code that inserts elements into the list based on the given key
value.
(head and trail are dummy nodes to mark the end and beginning of the list, they do not
contain any priority or element)
a)

advertisement
public void insert_key(int key,Object item)
{
if(key<0)
{
Systerm.our.println("invalid");
System.exit(0);
}
else
{
Node temp = new Node(key,item,null);
if(count == 0)
{
head.setNext(temp);
temp.setNext(trail);
}
else
{
Node dup = head.getNext();
Node cur = head;
while((key>dup.getKey()) && (dup!=trail))
{
dup = dup.getNext();
cur = cur.getNext();
}
cur.setNext(temp);
temp.setNext(dup);
}
count++;
}
}

b)

Note: Join free Sanfoundry classes at Telegram or Youtube


public void insert_key(int key,Object item)
{
if(key<0)
{
Systerm.our.println("invalid");
System.exit(0);
}
else
{
Node temp = new Node(key,item,null);
if(count == 0)
{
head.setNext(temp);
temp.setNext(trail);
}
else
{
Node dup = head.getNext();
Node cur = dup;
while((key>dup.getKey()) && (dup!=trail))
{
dup = dup.getNext();
cur = cur.getNext();
}
cur.setNext(temp);
temp.setNext(dup);
}
count++;
}
}

c)

public void insert_key(int key,Object item)


{
if(key<0)
{
Systerm.our.println("invalid");
System.exit(0);
}
else
{
Node temp = new Node(key,item,null);
if(count == 0)
{
head.setNext(temp);
temp.setNext(trail);
}
else
{
Node dup = head.getNext();
Node cur = head;
while((key>dup.getKey()) && (dup!=trail))
{
dup = dup.getNext();
cur = cur.getNext();
}
cur.setNext(dup);
temp.setNext(cur);
}
count++;
}
}

d)

public void insert_key(int key,Object item)


{
if(key<0)
{
Systerm.our.println("invalid");
System.exit(0);
}
else
{
Node temp = new Node(key,item,null);
if(count == 0)
{
head.setNext(temp);
temp.setNext(trail);
}
else
{
Node dup = head.getNext();
Node cur = head;
while((key>dup.getKey()) && (dup!=trail))
{
dup = cur
cur = cur.getNext();
}
cur.setNext(dup);
temp.setNext(cur);
}
count++;
}
}

View Answer
Answer: a
Explanation: Have two temporary pointers ‘dup’ and ‘cur’ with ‘cur’ trailing behind ‘dup’.
Traverse through the list until the given key is greater than some element with a lesser key,
insert the new node ‘temp’ in that position.

4. What is the time complexity to insert a node based on key in a priority queue?
a) O(nlogn)
b) O(logn)
c) O(n)
d) O(n2)
View Answer
Answer: c
Explanation: In the worst case, you might have to traverse the entire list.

5. What is the functionality of the following piece of code?

public Object delete_key()


{
if(count == 0)
{
System.out.println("Q is empty");
System.exit(0);
}
else
{
Node cur = head.getNext();
Node dup = cur.getNext();
Object e = cur.getEle();
head.setNext(dup);
count--;
return e;
}
}

a) Delete the second element in the list


b) Return but not delete the second element in the list
c) Delete the first element in the list
d) Return but not delete the first element in the list
View Answer
Answer: c
Explanation: A pointer is made to point at the first element in the list and one more to point
to the second element, pointer manipulations are done such that the first element is no
longer being pointed by any other pointer, its value is returned.

6. What is not a disadvantage of priority scheduling in operating systems?


a) A low priority process might have to wait indefinitely for the CPU
b) If the system crashes, the low priority systems may be lost permanently
c) Interrupt handling
d) Indefinite blocking
View Answer
Answer: c
Explanation: The lower priority process should wait until the CPU completes the processing
higher priority process. Interrupt handling is an advantage as interrupts should be given
more priority than tasks at hand so that interrupt can be serviced to produce desired results.

7. Which of the following is not an advantage of a priority queue?


a) Easy to implement
b) Processes with different priority can be efficiently handled
c) Applications with differing requirements
d) Easy to delete elements in any case
View Answer
Answer: d
Explanation: In worst case, the entire queue has to be searched for the element having the
highest priority. This will take more time than usual. So deletion of elements is not an
advantage.

8. What is the time complexity to insert a node based on position in a priority queue?
a) O(nlogn)
b) O(logn)
c) O(n)
d) O(n2)
View Answer
Answer: c
Explanation: In the worst case, you might have to traverse the entire list.

Data Structure Questions and Answers –


Double Ended Queue (Dequeue)
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on
“Double Ended Queue (Dequeue)”.

1. What is a dequeue?
a) A queue with insert/delete defined for both front and rear ends of the queue
b) A queue implemented with a doubly linked list
c) A queue implemented with both singly and doubly linked lists
d) A queue with insert/delete defined for front side of the queue
View Answer
Answer: a
Explanation: A dequeue or a double ended queue is a queue with insert/delete defined for
both front and rear ends of the queue.

2. Select the function which performs insertion at the front end of the dequeue?
a)

public void function(Object item)


{
Node temp = new Node(item,null);
if(isEmpty())
{
temp.setNext(trail);
head.setNext(temp);
}
else
{
Node cur = head.getNext();
temp.setNext(cur);
head.setNext(temp);
}
size++;
}

b)

advertisement
public void function(Object item)
{
Node temp = new Node(item,null);
if(isEmpty())
{
temp.setNext(trail);
head.setNext(trail);
}
else
{
Node cur = head.getNext();
temp.setNext(cur);
head.setNext(temp);
}
size++;
}

c)

Note: Join free Sanfoundry classes at Telegram or Youtube


public void function(Object item)
{
Node temp = new Node(item,null);
if(isEmpty())
{
Node cur = head.getNext();
temp.setNext(cur);
head.setNext(temp);
}
else
{
temp.setNext(trail);
head.setNext(temp);
}
size++;
}

d)
public void function(Object item)
{
Node temp = new Node(item,null);
if(isEmpty())
{
Node cur = head.getNext();
temp.setNext(cur);
cur.setNext(temp);
}
else
{
head.setNext(trail);
trail.setNext(temp);
}
size++;
}

View Answer
Answer: a
Explanation: Create a new node, if the current list is empty, the ‘head’ points to this node
and this new node points to ‘trail’. Otherwise, ‘head’ points to the new node and this in turn
points to the current first element(head.getNext()).

3. What is the functionality of the following piece of code?


public void function(Object item)
{
Node temp=new Node(item,trail);
if(isEmpty())
{
head.setNext(temp);
temp.setNext(trail);
}
else
{
Node cur=head.getNext();
while(cur.getNext()!=trail)
{
cur=cur.getNext();
}
cur.setNext(temp);
}
size++;
}

a) Insert at the front end of the dequeue


b) Insert at the rear end of the dequeue
c) Fetch the element at the rear end of the dequeue
d) Fetch the element at the front end of the dequeue
View Answer
Answer: b
Explanation: If the list is empty, this new node will point to ‘trail’ and will be pointed at by
‘head’. Otherwise, traverse till the end of the list and insert the new node there.
4. What are the applications of dequeue?
a) A-Steal job scheduling algorithm
b) Can be used as both stack and queue
c) To find the maximum of all sub arrays of size k
d) All of the mentioned
View Answer
Answer: d
Explanation: All of the mentioned can be implemented with a dequeue.

5. Which of the following can be used to delete an element from the front end of the queue?
a)

public Object deleteFront() throws emptyDEQException


{
if(isEmpty())
throw new emptyDEQException("Empty");
else
{
Node temp = head.getNext();
Node cur = temp;
Object e = temp.getEle();
head.setNext(cur);
size--;
return e;
}
}

b)

public Object deleteFront() throws emptyDEQException


{
if(isEmpty())
throw new emptyDEQException("Empty");
else
{
Node temp = head.getNext();
Node cur = temp.getNext();
Object e = temp.getEle();
head.setNext(cur);
size--;
return e;
}
}

c)

public Object deleteFront() throws emptyDEQException


{
if(isEmpty())
throw new emptyDEQException("Empty");
else
{
Node temp = head.getNext();
Node cur = temp.getNext();
Object e = temp.getEle();
head.setNext(temp);
size--;
return e;
}
}

d)

public Object deleteFront() throws emptyDEQException


{
if(isEmpty())
throw new emptyDEQException("Empty");
else
{
Node temp = head.getNext();
Node cur = temp.getNext();
Object e = temp.getEle();
temp.setNext(cur);
size--;
return e;
}
}

View Answer

6. Which of the following can be used to delete an element from the rear end of the queue?
a)
public Object deleteRear() throws emptyDEQException
{
if(isEmpty())
throw new emptyDEQException("Empty");
else
{
Node temp = head.getNext();
Node cur = temp;
while(temp.getNext() != trail)
{
temp = temp.getNext();
cur = cur.getNext();
}
Object e = temp.getEle();
cur.setNext(trail);
size--;
return e;
}
}

b)

public Object deleteRear() throws emptyDEQException


{
if(isEmpty())
throw new emptyDEQException("Empty");
else
{
Node temp = head.getNext();
Node cur = head;
while(temp != trail)
{
temp = temp.getNext();
cur = cur.getNext();
}
Object e = temp.getEle();
cur.setNext(trail);
size--;
return e;
}
}

c)

public Object deleteRear() throws emptyDEQException


{
if(isEmpty())
throw new emptyDEQException("Empty");
else
{
Node temp = head.getNext();
Node cur = head;
while(temp.getNext()!=trail)
{
temp = temp.getNext();
cur = cur.getNext();
}
Object e = temp.getEle();
cur.setNext(trail);
size--;
return e;
}
}

d)

public Object deleteRear() throws emptyDEQException


{
if(isEmpty())
throw new emptyDEQException("Empty");
else
{
Node temp = head.getNext();
Node cur = head;
while(temp.getNext()!=trail)
{
temp = temp.getNext();
cur = cur.getNext();
}
Object e = temp.getEle();
temp.setNext(trail);
size--;
return e;
}
}

View Answer
Answer: c
Explanation: Traverse till the end of the list with a pointer ‘temp’ and another ‘cur’ which is
trailing behind temp, make ‘cur’ point to trail, this removes all reference for ‘temp’.

7. What is the time complexity of deleting from the rear end of the dequeue implemented
with a singly linked list?
a) O(nlogn)
b) O(logn)
c) O(n)
d) O(n2)
View Answer
Answer: c
Explanation: Since a singly linked list is used, first you have to traverse till the end, so the
complexity is O(n).

8. After performing these set of operations, what does the final list look contain?

InsertFront(10);
InsertFront(20);
InsertRear(30);
DeleteFront();
InsertRear(40);
InsertRear(10);
DeleteRear();
InsertRear(15);
display();

a) 10 30 10 15
b) 20 30 40 15
c) 20 30 40 10
d) 10 30 40 15
View Answer
Answer: d

Data Structure Questions and Answers –


Evaluation of an Infix Expression (Not
Parenthesized)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Evaluation of an Infix Expression (Not Parenthesized)”.

1. How many stacks are required for applying evaluation of infix expression algorithm?
a) one
b) two
c) three
d) four
View Answer
Answer: b
Explanation: Two stacks are required for evaluation of infix expression – one for operands
and one for operators.

2. How many passes does the evaluation of infix expression algorithm makes through the
input?
a) One
b) Two
c) Three
d) Four
View Answer
Answer: a
Explanation: Evaluation of infix expression algorithm is linear and makes only one pass
through the input.

3. Identify the infix expression from the list of options given below.
a) a/b+(c-d)
b) abc*+d+ab+cd+*ce-f-
c) ab-c-
d) +ab
View Answer
Answer: a
Explanation: a/b+(c-d) is an infix expression since the operators are placed in between the
operands.

advertisement

4. Which of the following statement is incorrect with respect to evaluation of infix expression
algorithm?
a) Operand is pushed on to the stack
b) If the precedence of operator is higher, pop two operands and evaluate
c) If the precedence of operator is lower, pop two operands and evaluate
d) The result is pushed on to the operand stack
View Answer
Answer: b
Explanation: If the precedence of the operator is higher than the stack operator, then it is
pushed on to the stack operator.

5. Evaluate the following statement using infix evaluation algorithm and choose the correct
answer. 1+2*3-2
a) 3
b) 6
c) 5
d) 4
View Answer
Answer: c
Explanation: According to precedence of operators, * is evaluated first. + and – have equal
priorities. Hence, 1+6-2= 5.

Subscribe Now: Data Structure Newsletter | Important Subjects Newsletters

6. Evaluation of infix expression is done based on precedence of operators.


a) True
b) False
View Answer
Answer: a
Explanation: During evaluation of infix expression, the operators with higher precedence are
evaluated first, followed by operators with lower precedence.

7. Of the following choices, which operator has the lowest precedence?


a) ^
b) +
c) /
d) #
View Answer
Answer: d
Explanation: The operator with the lowest precedence is #, preceded by +, / and then ^.

8. The system throws an error if parentheses are encountered in an infix expression


evaluation algorithm.
a) True
b) False
View Answer
Answer: b
Explanation: The algorithm holds good for infix expression with parentheses. The system
does not throw error.

9. Evaluate the following and choose the correct answer.


a/b+c*d where a=4, b=2, c=2, d=1.
a) 1
b) 4
c) 5
d) 2
View Answer
Answer: b
Explanation: * and / have higher priority. Hence, they are evaluated first. Then, + is
evaluated. Hence, 2+2=4.

10. Evaluate the following statement using infix evaluation algorithm and choose the correct
answer. 4*2+3-5/5
a) 10
b) 11
c) 16
d) 12
View Answer
Answer: a
Explanation: 4*2 and 5/5 are evaluated first and then, 8+3-1 is evaluated and the result is
obtained as 10.

11. Using the evaluation of infix expression, evaluate a^b+c and choose the correct answer.
(a=2, b=2, c=2)
a) 12
b) 8
c) 10
d) 6
View Answer
Answer: d
Explanation: ^ has the highest precedence. Hence, 2^2 is evaluated and then 4+2 gives 6.

12. Evaluate the following infix expression using algorithm and choose the correct answer.
a+b*c-d/e^f where a=1, b=2, c=3, d=4, e=2, f=2.
a) 6
b) 8
c) 9
d) 7
View Answer
Answer: a
Explanation: ^ has the highest order of precedence. Hence, 2^2 is evaluated first, and then,
2*3 and 4/4 are evaluated. Therefore, 1+6-1=6.

13. From the given expression tree, identify the infix expression, evaluate it and choose the
correct result.

a) 5
b) 10
c) 12
d) 16
View Answer
Answer: c
Explanation: From the given expression tree, the result of the infix expression is evaluated
to be 12.

Evaluation of a Prefix Expression Multiple


Choice Questions and Answers (MCQs)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Evaluation of a Prefix Expression”.

1. How many stacks are required for evaluation of prefix expression?


a) one
b) two
c) three
d) four
View Answer
Answer: b
Explanation: 2 stacks are required for evaluation of prefix expression, one for integers and
one for characters.

2. While evaluating a prefix expression, the string is read from?


a) left to right
b) right to left
c) center to right
d) center to left to right
View Answer
Answer: b
Explanation: The string is read from right to left because a prefix string has operands to its
right side.

3. The associativity of an exponentiation operator ^ is right side.


a) True
b) False
View Answer
Answer: a
Explanation: The associativity of ^ is right side while the rest of the operators like +,-,*,/ has
its associativity to its left.

advertisement

4. How many types of input characters are accepted by this algorithm?


a) one
b) two
c) three
d) four
View Answer
Answer: c
Explanation: Three kinds of input are accepted by this algorithm- numbers, operators and
new line characters.

5. What determines the order of evaluation of a prefix expression?


a) precedence and associativity
b) precedence only
c) associativity only
d) depends on the parser
View Answer
Answer: a
Explanation: Precedence is a very important factor in determining the order of evaluation. If
two operators have the same precedence, associativity comes into action.

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!

6. Find the output of the following prefix expression.

*+2-2 1/-4 2+-5 3 1

a) 2
b) 12
c) 10
d) 4
View Answer
Answer: a
Explanation: The given prefix expression is evaluated using two stacks and the value is
given by (2+2-1)*(4-2)/(5-3+1)= 2.

7. An error is thrown if the character ‘\n’ is pushed in to the character stack.


a) true
b) false
View Answer
Answer: b
Explanation: The input character ‘\n’ is accepted as a character by the evaluation of prefix
expression algorithm.

8. Using the evaluation of prefix algorithm, evaluate +-9 2 7.


a) 10
b) 4
c) 17
d) 14
View Answer
Answer: d
Explanation: Using the evaluation of prefix algorithm, +-9 2 7 is evaluated as 9-2+7=14.

9. If -*+abcd = 11, find a, b, c, d using evaluation of prefix algorithm.


a) a=2, b=3, c=5, d=4
b) a=1, b=2, c=5, d=4
c) a=5, b=4, c=7,d=5
d) a=1, b=2, c=3, d=4
View Answer
Answer: b
Explanation: The given prefix expression is evaluated as ((1+2)*5)-4 = 11 while a=1, b=2,
c=5, d=4.

10. In the given C snippet, find the statement number that has error.

//C code to push an element into a stack


1. void push( struct stack *s, int x)
2. {
3. if(s->top==MAX-1)
4. {
5. printf(“stack overflow”);
6. }
7. else
8. {
9. s->items[++s->top]=x;
10. s++;
11. }
12. }
a) 1
b) 9
c) 10
d) 11
View Answer
Answer: c
Explanation: If the stack is not full then we are correctly incrementing the top of the stack by
doing “++s->top” and storing the value of x in it. However, in the next statement “s++”, we
are un-necessarily incrementing the stack base pointer which will lead to memory corruption
during the next push() operation.

Evaluation of a Postfix Expression Multiple


Choice Questions and Answers (MCQs)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Evaluation of a Postfix Expression”.

1. What is the other name for a postfix expression?


a) Normal polish Notation
b) Reverse polish Notation
c) Warsaw notation
d) Infix notation
View Answer
Answer: b
Explanation: Reverse polish Notation is the other name for a postfix expression whereas
Polish Notation, Warsaw notation are the other names for a prefix expression.

2. Which of the following is an example for a postfix expression?


a) a*b(c+d)
b) abc*+de-+
c) +ab
d) a+b-c
View Answer
Answer: b
Explanation: abc*+de-+ is a postfix expression. +ab is a prefix expression and others are
infix expressions.

3. Reverse Polish Notation is the reverse of a Polish Notation.


a) True
b) False
View Answer
Answer: b
Explanation: Reverse Polish Notation is not the reverse of a polish notation. Though both
NPN and RPN read the expression from left to right, they follow different strategies.

advertisement

4. What is the time complexity of evaluation of postfix expression algorithm?


a) O (N)
b) O (N log N)
c) O (N2)
d) O (M log N)
View Answer
Answer: a
Explanation: The time complexity of evaluation of infix, prefix and postfix expressions is O
(N).

5. In Postfix expressions, the operators come after the operands.


a) True
b) False
View Answer
Answer: a
Explanation: In postfix expressions, the operators follow operands. In prefix expressions,
the operands follow operators.

Note: Join free Sanfoundry classes at Telegram or Youtube


6. Which of these operators have the highest order of precedence?
a) ‘(‘ and ‘)’
b) ‘*’ and ‘/’
c) ‘~’ and ‘^’
d) ‘+’ and ‘-‘
View Answer
Answer: c
Explanation: The highest order of precedence is ~ and ^ followed by ‘*’ ,’ /’, ‘+’ ,’-‘ and then
braces ‘(‘ ‘)’.

7. Which of the following is not an application of stack?


a) evaluation of postfix expression
b) conversion of infix to postfix expression
c) balancing symbols
d) line at ticket counter
View Answer
Answer: d
Explanation: Line at ticket counter is an application of queue whereas conversion of infix to
postfix expression, balancing symbols, line at ticket counter are stack applications.

8. While evaluating a postfix expression, when an operator is encountered, what is the


correct operation to be performed?
a) push it directly on to the stack
b) pop 2 operands, evaluate them and push the result on to the stack
c) pop the entire stack
d) ignore the operator
View Answer
Answer: b
Explanation: When an operator is encountered, the first two operands are popped from the
stack, they are evaluated and the result is pushed into the stack.

9. Which of the following statement is incorrect?


a) Postfix operators use value to their right
b) Postfix operators use value to their left
c) Prefix operators use value to their right
d) In postfix expression, operands are followed by operators
View Answer
Answer: a
Explanation: All prefix operators use values to their right and all postfix operators use values
to their left.

10. What is the result of the given postfix expression? abc*+ where a=1, b=2, c=3.
a) 4
b) 5
c) 6
d) 7
View Answer
Answer: d
Explanation: The infix expression is a+b*c. Evaluating it, we get 1+2*3=7.

11. What is the result of the following postfix expression?


ab*cd*+ where a=2,b=2,c=3,d=4.
a) 16
b) 12
c) 14
d) 10
View Answer
Answer: a
Explanation: The infix expression is a*b+c*d. Evaluating it, we get, 2*2+3*4=16.

12. Consider the stack


|5|
|4|
|3|
| 2 |.
At this point, ‘*’ is encountered. What has to be done?
a) 5*4=20 is pushed into the stack
b) * is pushed into the stack
c) 2*3=6 is pushed into the stack
d) * is ignored
View Answer
Answer: a
Explanation: When an operator is encountered, the first two operands of the stack are
popped, evaluated and the result is pushed into the stack.

13. Evaluate the postfix expression ab + cd/- where a=5, b=4, c=9, d=3.
a) 23
b) 15
c) 6
d) 10
View Answer
Answer: c
Explanation: The infix expression is (a+b)-c/d. Evaluating it, (5+4)-9/3 gives 6.

14. Evaluate and write the result for the following postfix expression
abc*+de*f+g*+ where a=1, b=2, c=3, d=4, e=5, f=6, g=2.
a) 61
b) 59
c) 60
d) 55
View Answer
Answer: b
Explanation: The infix expression is a+b*c+(d*e+f)*g. Evaluating it, 1+2*3+(4*5+6)*2 gives
59.
15. For the given expression tree, write the correct postfix expression.

a) abc*+
b) abc+*
c) ab+c*
d) a+bc*
View Answer
Answer: a
Explanation: Evaluating the given expression tree gives the infix expression a+b*c.
Converting it to postfix, we get, abc*+.

Infix to Prefix Conversion Multiple Choice


Questions and Answers (MCQs)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Infix to Prefix Conversion”.

1. What data structure is used when converting an infix notation to prefix notation?
a) Stack
b) Queue
c) B-Trees
d) Linked-list
View Answer
Answer: a
Explanation: First you reverse the given equation and carry out the algorithm of infix to
postfix expression. Here, the data structure used is stacks.

2. What would be the Prefix notation for the given equation?

A+(B*C)
a) +A*CB
b) *B+AC
c) +A*BC
d) *A+CB
View Answer
Answer: c
Explanation: Reverse the equation or scan the equation from right to left. Apply the infix-
postfix algorithm. The equation inside the bracket evaluates to CB* and outside the bracket
evaluates to A+ therefore getting CB*A+. Reversing this and we get +A*BC.

advertisement

3. What would be the Prefix notation for the given equation?

Subscribe Now: Data Structure Newsletter | Important Subjects Newsletters


(A*B)+(C*D)
a) +*AB*CD
b) *+AB*CD
c) **AB+CD
d) +*BA*CD
View Answer
Answer: a
Explanation: Reverse the equation or scan the equation from right to left. Apply the infix-
postfix algorithm. The equation inside the brackets evaluate to DC* and BA* respectively
giving us DC*BA*+ in the end. Reversing this we get the +*AB*CD.

4. What would be the Prefix notation for the given equation?

A+B*C^D
a) +A*B^CD
b) +A^B*CD
c) *A+B^CD
d) ^A*B+CD
View Answer
Answer: a
Explanation: Reverse the equation or scan the equation from right to left. Apply the infix-
prefix algorithm. The preference order in ascending order are as follows +*^. Operators are
pushed into the stack and popped if its preference is greater than the one which is getting
pushed. In the end all operators are popped. The equation evaluates to DC^B*A+.
Reversing this we get our following answer.

5. Out of the following operators (^, *, +, &, $), the one having highest priority is _________
a) +
b) $
c) ^
d) &
View Answer
Answer: c
Explanation: According to the algorithm (infix-prefix), it follows that the exponentiation will
have the highest priority.

6. Out of the following operators (|, *, +, &, $), the one having lowest priority is ________
a) +
b) $
c) |
d) &
View Answer
Answer: c
Explanation: According to the algorithm (infix-prefix), it follows that the logical OR will have
the lowest priority.

7. What would be the Prefix notation for the given equation?

A^B^C^D
a) ^^^ABCD
b) ^A^B^CD
c) ABCD^^^
d) AB^C^D
View Answer
Answer: a
Explanation: Reverse the equation or scan the equation from right to left. Apply the infix-
prefix algorithm. Here we have to remember that the exponentiation has order of
associativity from right to left. Therefore the stack goes on pushing ^. Therefore resulting in
^^^ABCD.

8. What would be the Prefix notation for the given equation?

a+b-c/d&e|f
a) |&-+ab/cdef
b) &|-+ab/cdef
c) |&-ab+/cdef
d) |&-+/abcdef
View Answer
Answer: a
Explanation: Reverse the equation or scan the equation from right to left. Apply the infix-
prefix algorithm. The preference order in ascending order are as follows |&+*/.

9. What would be the Prefix notation for the given equation?

(a+(b/c)*(d^e)-f)
a) -+a*/^bcdef
b) -+a*/bc^def
c) -+a*b/c^def
d) -a+*/bc^def
View Answer
Answer: b
Explanation: Reverse the equation or scan the equation from right to left. Apply the infix-
prefix algorithm. The preference order in ascending order are as follows +*/^. Brackets have
the highest priority. The equations inside the brackets are solved first.
10. What would be the Prefix notation and Postfix notation for the given equation?

A+B+C
a) ++ABC and AB+C+
b) AB+C+ and ++ABC
c) ABC++ and AB+C+
d) ABC+ and ABC+
View Answer
Answer: a
Explanation: For prefix notation there is a need of reversing the giving equation and solving
it as a normal infix-postfix question. We see that it doesn’t result as same as normal infix-
postfix conversion.

11. What would be the Prefix notation for the given equation?

a|b&c
a) a|&bc
b) &|abc
c) |a&bc
d) ab&|c
View Answer
Answer: c
Explanation: The order of preference of operators is as follows (descending): & |.
The equation a|b&c will be parenthesized as (a|(b&c)) for evaluation.
Therefore the equation for prefix notation evaluates to |a&bc.

Infix to Postfix Conversion Multiple Choice


Questions and Answers (MCQs)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Infix to Postfix Conversion”.

1. When an operand is read, which of the following is done?


a) It is placed on to the output
b) It is placed in operator stack
c) It is ignored
d) Operator stack is emptied
View Answer
Answer: a
Explanation: While converting an infix expression to a postfix expression, when an operand
is read, it is placed on to the output. When an operator is read, it is placed in the operator
stack.

2. What should be done when a left parenthesis ‘(‘ is encountered?


a) It is ignored
b) It is placed in the output
c) It is placed in the operator stack
d) The contents of the operator stack is emptied
View Answer
Answer: c
Explanation: When a left parenthesis is encountered, it is placed on to the operator stack.
When the corresponding right parenthesis is encountered, the stack is popped until the left
parenthesis and remove both the parenthesis.

3. Which of the following is an infix expression?


a) (a+b)*(c+d)
b) ab+c*
c) +ab
d) abc+*
View Answer
Answer: a
Explanation: (a+b)*(c+d) is an infix expression. +ab is a prefix expression and ab+c* is a
postfix expression.

advertisement

4. What is the time complexity of an infix to postfix conversion algorithm?


a) O(N log N)
b) O(N)
c) O(N2)
d) O(M log N)
View Answer
Answer: b
Explanation: The time complexity of an infix to postfix expression conversion algorithm is
mathematically found to be O(N).

5.What is the postfix expression for the corresponding infix expression?

Subscribe Now: Data Structure Newsletter | Important Subjects Newsletters


a+b*c+(d*e)
a) abc*+de*+
b) abc+*de*+
c) a+bc*de+*
d) abc*+(de)*+
View Answer
Answer: a
Explanation: Using the infix to postfix expression conversion algorithm, the corresponding
postfix expression is found to be abc*+de*+.

6. Parentheses are simply ignored in the conversion of infix to postfix expression.


a) True
b) False
View Answer
Answer: b
Explanation: When a parenthesis is encountered, it is placed on the operator stack. When
the corresponding parenthesis is encountered, the stack is popped until the other
parenthesis is reached and they are discarded.

7. It is easier for a computer to process a postfix expression than an infix expression.


a) True
b) False
View Answer
Answer: a
Explanation: Computers can easily process a postfix expression because a postfix
expression keeps track of precedence of operators.

8. What is the postfix expression for the infix expression?

a-b-c
a) -ab-c
b) ab – c –
c) – -abc
d) -ab-c
View Answer
Answer: b
Explanation: The corresponding postfix expression for the given infix expression is found to
be ab-c- and not abc- -.

9. What is the postfix expression for the following infix expression?

a/b^c-d
a) abc^/d-
b) ab/cd^-
c) ab/^cd-
d) abcd^/-
View Answer
Answer: a
Explanation: Using the infix to postfix conversion algorithm, the corresponding postfix
expression for the infix expression is found to be abc^/d-.

10. Which of the following statement is incorrect with respect to infix to postfix conversion
algorithm?
a) operand is always placed in the output
b) operator is placed in the stack when the stack operator has lower precedence
c) parenthesis are included in the output
d) higher and equal priority operators follow the same condition
View Answer
Answer: c
Explanation: Parentheses are not included in the output. They are placed in the operator
stack and then discarded.

11. In infix to postfix conversion algorithm, the operators are associated from?
a) right to left
b) left to right
c) centre to left
d) centre to right
View Answer
Answer: b
Explanation: In infix, prefix and postfix expressions, the operators are associated from left to
right and not right to left.

12. What is the corresponding postfix expression for the given infix expression?

a*(b+c)/d
a) ab*+cd/
b) ab+*cd/
c) abc*+/d
d) abc+*d/
View Answer
Answer: d
Explanation: Using the infix to postfix conversion algorithm, the corresponding postfix
expression is obtained as abc+*d/.

13. What is the corresponding postfix expression for the given infix expression?

a+(b*c(d/e^f)*g)*h)
a) ab*cdef/^*g-h+
b) abcdef^/*g*h*+
c) abcd*^ed/g*-h*+
d) abc*de^fg/*-*h+
View Answer
Answer: b
Explanation: Using the infix to postfix expression conversion algorithm using stack, the
corresponding postfix expression is found to be abcdef^/*g*h*+.

14. What is the correct postfix expression for the following expression?

a+b*(c^d-e)^(f+g*h)-i
a) abc^de-fg+*^*+i-
b) abcde^-fg*+*^h*+i-
c) abcd^e-fgh*+^*+i-
d) ab^-dc*+ef^gh*+i-
View Answer
Answer: c
Explanation: The postfix expression for the given infix expression is found to be abcd^e-
fgh*+^*+i- when we use infix to postfix conversion algorithm.

15. From the given Expression tree, identify the correct postfix expression from the list of
options.

a) ab*cd*+
b) ab*cd-+
c) abcd-*+
d) ab*+cd-
View Answer
Answer: b
Explanation: From the given expression tree, the infix expression is found to be (a*b)+(c-d).
Converting it to postfix, we get, ab*cd-+.

Prefix to Infix Conversion Multiple Choice


Questions and Answers (MCQs)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Prefix to Infix Conversion”.

1. What would be the solution to the given prefix notation?

- + 5 / 10 5 5
a) 2
b) 5
c) 10
d) 7
View Answer
Answer: a
Explanation: The infix notation of the given prefix notation is 5+10/5-5 which gives us 2 as
our answer.

advertisement

2. What would be the solution to the given prefix notation?


/ / / 16 4 2 1
a) 1
b) 4
c) 2
d) 8
View Answer
Answer: c
Explanation: The infix notation to the given prefix notation is 16/4/2/1 which gives us 2 as
our answer. The infix notation is got from the prefix notation by traversing the equation from
the right.
= 16/4/2/1
= 4/2/1 (16/4=4)
= 2/1 (4/2=2)
= 2 (2/1=2).

Subscribe Now: Data Structure Newsletter | Important Subjects Newsletters

3. What would be the solution to the given prefix notation?

+ 9 * 3 / 8 4
a) 14
b) 15
c) 18
d) 12
View Answer
Answer: b
Explanation: The infix notation for the given prefix notation is (9+(3*(8/4))) which solves to
15. So 15 is correct answer.

4. What would be the solution to the given prefix notation?

- + 1 2 * 3 / 6 2
a) 6
b) -6
c) 3
d) -3
View Answer
Answer: b
Explanation: The infix notation for the given prefix notation is (1+2)-3*(6/2). The result of the
given equation is -6.

5. What would be the solution to the given prefix notation?

- * 1 5 / * / 6 3 6 2
a) 1
b) 0
c) -1
d) -2
View Answer
Answer: c
Explanation: The infix notation for the given prefix notation is (1*5)-(6/3)*6/2. The result of
the equation is -1.

6. What would be the solution to the given prefix notation?

* / + 1 2 / 4 2 + 3 5
a) 12
b) 7.5
c) 9
d) 13.5
View Answer
Answer: a
Explanation: The infix notation of the given prefix notation is ((1+2)/(4/2))*(3+5) which
solves to (3/2)*8 which by solving gives us 12.

7. Given a prefix and a postfix notation what are the difference between them?
a) The postfix equation is solved starting from the left whereas the prefix notation is solved
from the right
b) The postfix equation is solved starting from the right whereas the prefix notation is solved
from the left
c) Both equations are solved starting from the same side(right)
d) Both equations are solved starting from the same side(left)
View Answer
Answer: a
Explanation: The postfix notation is solved starting from left but whereas the prefix notation
is reversed after creating them, therefore it’s solved starting from right.

8. When converting the prefix notation into an infix notation, the first step to be followed is
________
a) Reverse the equation
b) Push the equation to the stack
c) Push the equation onto the queue
d) Push the equation to the stack or queue
View Answer
Answer: a
Explanation: The steps that are followed are: the equation is reversed, pushed onto a stack,
popped one by one and solved. Therefore the first step is reversing the equation.

9. The time complexity of converting a prefix notation to infix notation is _________


a) O(n) where n is the length of the equation
b) O(n) where n is number of operands
c) O(1)
d) O(logn) where n is length of the equation
View Answer
Answer: a
Explanation: The processes that are involved are reversing the equation (O(n)), pushing
them all onto the stack(O(n)), and popping them one by one and solving them (O(n)). Hence
the answer is O(n) where n is the length of the equation.

10. Given two processes (conversion of postfix equation to infix notation and conversion of
prefix notation to infix notation), which of the following is easier to implement?
a) Both are easy to implement
b) Conversion of postfix equation to infix equation is harder than converting a prefix notation
to infix notation
c) Conversion of postfix equation to infix equation is easier than converting a prefix notation
to infix notation
d) Insufficient data
View Answer
Answer: c
Explanation: As the conversion of prefix notation to infix notation involves reversing the
equation, the latter is harder to implement than postfix to infix process.

Postfix to Infix Conversion Multiple Choice


Questions and Answers (MCQs)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Postfix to Infix Conversion”.

1. Which of the following data structure is used to convert postfix expression to infix
expression?
a) Stack
b) Queue
c) Linked List
d) Heap
View Answer
Answer: a
Explanation: To convert the postfix expression into infix expression we need stack. We
need stack to maintain the intermediate infix expressions. We use stack to hold operands.

2. The postfix expression abc+de/*- is equivalent to which of the following infix expression?
a) abc+-de*/
b) (a+b)-d/e*c
c) a-(b+c)*(d/e)
d) abc+*-(d/e)
View Answer
Answer: c

infix ⇒ a(b+c)(d/e)*-
Explanation: Given postfix expression : abc+de/*-
⇒ a(b+c)*(d/e)-
⇒ a-(b+c)*(d/e)
Hence, correct choice is a-(b+c)*(d/e).

3. The equivalent infix expression and value for the postfix form 1 2 + 3 * 4 5 * – will be
___________
a) 1 + 2 * 3 – 4 * 5 and -13
b) (2 + 1) * (3 – 4) * 5 and 13
c) 1 + 2 * (3 – 4) * 5 and -11
d) (1 + 2) * 3 – (4 * 5) and -11
View Answer
Answer: d

⇒ (1 + 2) 3 * 4 5 * –
Explanation: Given postfix expression : 1 2 + 3 * 4 5 * –

⇒ ((1 + 2) * 3) 4 5 * –
⇒ ((1 + 2) * 3) (4 * 5) –
⇒ ((1 + 2) * 3) – (4 * 5)
So, the equivalent infix expression is (1 + 2) * 3 – (4 * 5) and it’s value is -11.

advertisement

4. What is the value of the postfix expression 2 3 + 4 5 6 – – *


a) 19
b) 21
c) -4
d) 25
View Answer
Answer: d

infix ⇒ (2 + 3)4 (5 – 6) – *
Explanation: Given postfix expression : 2 3 + 4 5 6 – – *

⇒ (2 + 3)*4 – (5 – 6)
Hence, value = (2 + 3) * (4 – (5 – 6)) = 5 *(4 – (-1)) = 5*5 = 25.

5. The prefix expression of the postfix expression AB+CD-* is __________


a) (A+B)*(C-D)
b) +AB*-CD
c) A+*BCD-
d) *+AB-CD
View Answer
Answer: d
Explanation: To convert from postfix to prefix, we first convert it to infix and then to prefix.

infix ⇒ (A+B) * (C-D)


postfix : AB+CD-*

So, prefix ⇒ +AB*-CD,


⇒ *+AB-CD.
Therefore, correct choice is *+AB-CD.

Note: Join free Sanfoundry classes at Telegram or Youtube

6. Consider the postfix expression 4 5 6 a b 7 8 a c, where a, b, c are operators. Operator a


has higher precedence over operators b and c. Operators b and c are right associative.
Then, equivalent infix expression is
a) 4 a 5 6 b 7 8 a c
b) 4 a 5 c 6 b 7 a 8
c) 4 b 5 a 6 c 7 a 8
d) 4 a 5 b 6 c 7 a 8
View Answer
Answer: c

infix ⇒ 4 (5 a 6) b (7 a 8) c
Explanation: Given postfix expression: 4 5 6 a b 7 8 a c

⇒ (4 b (5 a 6)) (7 a 8) c
⇒ (4 b (5 a 6)) c (7 a 8)
So, the required infix expression is 4 b 5 a 6 c 7 a 8.

7. To convert the postfix expression into the infix expression we use stack and scan the
postfix expression from left to right.
a) True
b) False
View Answer
Answer: a
Explanation: Stack is used to postfix expression to infix expression. And to convert we
follow the following steps: (i) Scan the expression from left to right. (ii) If operand is found,
push it on stack.(iii) If operator is found, the two operands are popped and the combined
infix expression is formed and pushed onto the stack.

8. Which of the following is valid reverse polish expression?


a) a op b
b) op a b
c) a b op
d) both op a b and a b op
View Answer
Answer: c
Explanation: The postfix expression is also known as the reverse polish expression. In
postfix expressions, the operators come after the operands. So, the correct expression is a
b op and hence a b op is correct.

9. The result of the postfix expression 5 3 * 9 + 6 / 8 4 / + is _____________


a) 8
b) 6
c) 10
d) 9
View Answer
Answer: b
Explanation: Given postfix expression: 5 3 * 9 + 6 / 8 4 / +
Result = 5 3 * 9 + 6 / 8 4 / +
= (5 * 3) 9 + 6 / (8 / 4) +
= ((5 * 3) + 9) / 6 + ( 8 / 4) = ( 24 / 6) + 2 = 4 + 2 = 6.

Data Structure Questions and Answers –


Towers of Hanoi
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on
“Towers of Hanoi”.

1. The optimal data structure used to solve Tower of Hanoi is _________


a) Tree
b) Heap
c) Priority queue
d) Stack
View Answer
Answer: d
Explanation: The Tower of Hanoi involves moving of disks ‘stacked’ at one peg to another
peg with respect to the size constraint. It is conveniently done using stacks and priority
queues. Stack approach is widely used to solve Tower of Hanoi.

2. Select the appropriate code for the recursive Tower of Hanoi problem.(n is the number of
disks)
a)

public void solve(int n, String start, String auxiliary, String end)


{
if (n == 1)
{
System.out.println(start + " -> " + end);
}
else
{
solve(n - 1, start, end, auxiliary);
System.out.println(start + " -> " + end);
solve(n - 1, auxiliary, start, end);
}
}
b)

advertisement

public void solve(int n, String start, String auxiliary, String end)


{
if (n == 1)
{
System.out.println(start + " -> " + end);
}
else
{
solve(n - 1, auxiliary, start, end);
System.out.println(start + " -> " + end);
}
}
c)

Subscribe Now: Data Structure Newsletter | Important Subjects Newsletters


public void solve(int n, String start, String auxiliary, String end)
{
if (n == 1)
{
System.out.println(start + " -> " + end);
}
else
{
System.out.println(start + " -> " + end);
solve(n - 1, auxiliary, start, end);
}
}
d)

public void solve(int n, String start, String auxiliary, String end)


{
if (n == 1)
{
System.out.println(start + " -> " + end);
}
else
{
solve(n - 1, start, end, auxiliary);
System.out.println(start + " -> " + end);
}
}
View Answer

Answer: a
Explanation: First transfer all the diska to the auxiliary and then to the end peg, this is
achieved by making auxiliary peg as the end peg in the first recursive call, in the second
recursive call, the auxiliary becomes the start peg from where the disks are transferred to
the end peg.

3. Which among the following is not a palindrome?


a) Madam
b) Dad
c) Malayalam
d) Maadam
View Answer
Answer: d
Explanation: A palindrome is a string that reads the same forward and backward, Madam,
Dad and Malayalam are palindromes where as Maadam is not a palindrome.

4. Which data structure can be used to test a palindrome?


a) Tree
b) Heap
c) Stack
d) Priority queue
View Answer
Answer: c
Explanation: Stack is a convenient option as it involves pushing and popping of characters.

5. Select the appropriate code which tests for a palindrome.


a)

public static void main(String[] args)


{
System.out.print("Enter any string:");
Scanner in=new Scanner(System.in);
String input = in.nextLine();
Stack<Character> stk = new Stack<Character>();
for (int i = 0; i < input.length(); i++)
{
stk.push(input.charAt(i));
}
String reverse = "";
while (!stk.isEmpty())
{
reverse = reverse + stk.pop();
}
if (input.equals(reverse))
System.out.println("palindrome");
else
System.out.println("not a palindrome");
}
b)

public static void main(String[] args)


{
System.out.print("Enter any string:");
Scanner in=new Scanner(System.in);
String input = in.nextLine();
Stack<Character> stk = new Stack<Character>();
for (int i = 0; i < input.length(); i++)
{
stk.push(input.charAt(i));
}
String reverse = "";
while (!stk.isEmpty())
{
reverse = reverse + stk.peek();
}
if (input.equals(reverse))
System.out.println("palindrome");
else
System.out.println("not a palindrome");
}
c)

public static void main(String[] args)


{
System.out.print("Enter any string:");
Scanner in=new Scanner(System.in);
String input = in.nextLine();
Stack<Character> stk = new Stack<Character>();
for (int i = 0; i < input.length(); i++)
{
stk.push(input.charAt(i));
}
String reverse = "";
while (!stk.isEmpty())
{
reverse = reverse + stk.pop();
stk.pop();
}
if (input.equals(reverse))
System.out.println("palindrome");
else
System.out.println("not a palindrome");
}
d)

public static void main(String[] args)


{
System.out.print("Enter any string:");
Scanner in=new Scanner(System.in);
String input = in.nextLine();
Stack<Character> stk = new Stack<Character>();
for (int i = 0; i < input.length(); i++)
{
stk.push(input.charAt(i));
}
String reverse = "";
while (!stk.isEmpty())
{
reverse = reverse + stk.pop();
stk.pop();
}
if (!input.equals(reverse))
System.out.println("palindrome");
else
System.out.println("not a palindrome");
}
View Answer

Answer: a
Explanation: Push all the characters in the input string to a stack, now pop them and
append to a new string which is checked for equality with the original string.

6. What is the number of moves required to solve Tower of Hanoi problem for k disks?
a) 2k – 1
b) 2k + 1
c) 2k + 1
d) 2k – 1
View Answer
Answer: d
Explanation: Tracing of the moves in the above ToH problem will prove this result, instead
you can simply add a count for each recursive call to check the number of moves.

7. Select the appropriate code which reverses a word.


a)

public String reverse(String input)


{
for (int i = 0; i < input.length(); i++)
{
stk.push(input.charAt(i));
}
String rev = "";
while (!stk.isEmpty())
{
rev = rev + stk.peek();
}
return rev;
}
b)

public String reverse(String input)


{
for (int i = 0; i < input.length(); i++)
{
stk.push(input.charAt(i));
}
String rev = "";
while (!stk.isEmpty())
{
rev = rev + stk.pop();
}
return rev;
}
c)

public String reverse(String input)


{
for (int i = 0; i < input.length(); i++)
{
stk.push(input.charAt(i));
}
String rev = "";
while (!stk.isEmpty())
{
rev = rev + stk.pop();
}
}
d)

public String reverse(String input)


{
for (int i = 0; i < input.length(); i++)
{
stk.push(input.charAt(i));
}
String rev = "";
while (!stk.isEmpty())
{
rev = rev + stk.pop();
stk.pop();
}
return rev;
}
View Answer

Answer: b
Explanation: Although, it is possible to reverse the string without using stack, it is done by
looping through the string from the end character by character.
In Java, it is also possible to use the StringBuilder and StringBuffer classes which have a
built-in method ‘reverse’.
Note its similarity to PalindromeTes

Data Structure Questions and Answers –


Reverse a Word using Stack
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Reverse a Word using Stack”.

1. Reversing a word using stack can be used to find if the given word is a palindrome or not.
a) True
b) False
View Answer
Answer: a
Explanation: This application of stack can also be used to find if the given word is a
palindrome because, if the reversed is same as that of the original word, the given word is a
palindrome.

2. Which is the most appropriate data structure for reversing a word?


a) queue
b) stack
c) tree
d) graph
View Answer
Answer: b
Explanation: Stack is the most appropriate data structure for reversing a word because
stack follows LIFO principle.

3. Operations required for reversing a word or a string using stack are push() and pop().
a) True
b) False
View Answer
Answer: a
Explanation: Push operation inserts a character into the stack and pop operation pops the
top of the stack.

advertisement

4. What is the time complexity of reversing a word using stack algorithm?


a) O (N log N)
b) O (N2)
c) O (N)
d) O (M log N)
View Answer
Answer: c
Explanation: The time complexity of reversing a stack is mathematically found to be O (N)
where N is the input.

5. What will be the word obtained if the word “abbcabb” is reversed using a stack?
a) bbabbca
b) abbcabb
c) bbacbba
d) bbacabb
View Answer
Answer: c
Explanation: The string “abbcabb” is pushed on to the stack. If the characters are popped
one by one, the word obtained will be bbacbba.

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!
6. How many stacks are required for reversing a word algorithm?
a) one
b) two
c) three
d) four
View Answer
Answer: a
Explanation: Only 1 stack is required for reversing a word using stack. In that stack, push
and pop operations are carried out.

7. What will be result if the given stack is popped?

a) pat
b) tap
c) atp
d) apt
View Answer
Answer: b
Explanation: The word ‘pat’ is pushed on to the stack. When the characters of the stack are
popped one by one, the word ‘tap’ is obtained.

8. What will be output if the following sequence of operations are executed?

Push(a,s);

Push(b,s);

Pop(b);

Push(c,s);

a) abc
b) b
c) ac
d) acb
View Answer
Answer: b
Explanation: The element ‘b’ is popped out of the stack. Hence the output of the following
sequence of operations will be ‘b’.

9. What are the set of functions that are to be executed to get the following output?
cat
a) push(c, s); push(a, s); push(t, s);
pop(s); pop(s); pop(s);
b) push(c,s); pop(s); push(a,s); pop(s);push(t,s);pop(s);
c) pop(c ); pop(a); pop(t);
d) push(c,s); push(a,s); pop(t);
View Answer
Answer: b
Explanation: During push operation, the characters ‘c’, ’a’, ’t’ are inserted into the stack and
popped immediately after push.

10. How will your stack look like if the word ‘java’ is pushed?

a)

b)

c)

d)
View Answer
Answer: a
Explanation: When a character is pushed, it stays on the top of the stack. While popping,
the word occurs in reverse order since stack follows LIFO principle.

11. Find the error (if any) in the following code snippet for pop operation.

void pop() //removing an element from a stack


{
printf(“%s”, stack[top++]);
}
a) run time error
b) compile time error
c) pop operation is performed, but top moved in wrong direction
d) pop operation is performed properly
View Answer
Answer: c
Explanation: The statement printf(“%s”, stack[top++]) does a pop, but top gets incremented
which is not correct. The statement stack[top++] should be replaced with stack[top–] in
order to pop an operand and maintain stack properly.

12. What will be the output of the following program?

main()
{
char str[]="san foundry";
int len = strlen(str);
int i;

for(i=0;i<len;i++)
push(str[i]); // pushes an element into stack

for(i=0;i<len;i++)
pop(); //pops an element from the stack
}
a) sanfoundry
b) san foundry
c) yrdnuof nas
d) foundry nas
View Answer
Answer: c
Explanation: First, the string ‘san foundry’ is pushed one by one into the stack.
When it is popped, the output will be as ‘yrdnuof nas’

Balanced Parenthesis Multiple Choice


Questions and Answers (MCQs)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Balanced Parenthesis”.

1. What is the time complexity of balancing parentheses algorithm?


a) O (N)
b) O (N log N)
c) O (M log N)
d) O (N2)
View Answer
Answer: a
Explanation: The time complexity of balancing parentheses algorithm is mathematically
found to be O (N).
2. Which application of stack is used to ensure that the pair of parentheses is properly
nested?
a) Balancing symbols
b) Reversing a stack
c) Conversion of an infix to postfix expression
d) Conversion of an infix to prefix expression
View Answer
Answer: a
Explanation: Balancing symbols application ensures that the pair of parentheses are
properly nested while reversing stack reverses a stack.

3. In balancing parentheses algorithm, the string is read from?


a) right to left
b) left to right
c) center to right
d) center to left
View Answer
Answer: b
Explanation: Any string is read by the compiler from left to right and not from right to left.

advertisement

4. Which is the most appropriate data structure for applying balancing of symbols
algorithm?
a) stack
b) queue
c) tree
d) graph
View Answer
Answer: a
Explanation: Stack is the most appropriate data structure for balancing symbols algorithm
because stack follows LIFO principle (Last In First Out).

5. Which of the following does the balancing symbols algorithm include?


a) balancing double quotes
b) balancing single quotes
c) balancing operators and brackets
d) balancing parentheses, brackets and braces
View Answer
Answer: d
Explanation: The balancing symbols algorithm using stack only includes balancing
parentheses, brackets and braces and not any other symbols.

Subscribe Now: Data Structure Newsletter | Important Subjects Newsletters

6. Which of the following statement is incorrect with respect to balancing symbols


algorithm?
a) {[()]}
b) ([ )]
c) {( )}
d) { [ ] }
View Answer
Answer: b
Explanation: ([ )] is incorrect because’)’ occurs before the corresponding ‘]’ is encountered.

7. What should be done when an opening parentheses is read in a balancing symbols


algorithm?
a) push it on to the stack
b) throw an error
c) ignore the parentheses
d) pop the stack
View Answer
Answer: a
Explanation: When an opening bracket/braces/parentheses is encountered, it is pushed on
to the stack. When the corresponding end bracket/braces/parentheses is not found, throw
an error.

8. When the corresponding end bracket/braces/parentheses is not found, what happens?


a) The stack is popped
b) Ignore the parentheses
c) An error is reported
d) It is treated as an exception
View Answer
Answer: c
Explanation: When the corresponding end bracket/braces/parentheses is not found, throw
an error since they don’t match.

9. If the corresponding end bracket/braces/parentheses is encountered, which of the


following is done?
a) push it on to the stack
b) pop the stack
c) throw an error
d) treated as an exception
View Answer
Answer: b
Explanation: When the corresponding end bracket/braces/parentheses is encountered, the
stack is popped. When an opening bracket/braces/parentheses is encountered, it is pushed
on to the stack.

10. An error is reported when the stack is not empty at the end.
a) True
b) False
View Answer
Answer: a
Explanation: When the stack contains elements at the end, it means that the given string of
parentheses is not balanced.

11. Is the given statement ((A+B) + [C-D]] valid with respect to balancing of symbols?
a) True
b) False
View Answer
Answer: b
Explanation: The given statement is invalid with respect to balancing of symbols because
the last parentheses do not correspond to the opening braces.

12. How many passes does the balancing symbols algorithm makes through the input?
a) one
b) two
c) three
d) four
View Answer
Answer: a
Explanation: The balancing symbols algorithm makes only one pass through the input since
it is linear.

13. Which of the following statement is invalid with respect to balancing symbols?
a) [(A+B) + (C-D)]
b) [{A+B}-{C-[D+E]}]
c) ((A+B) + (C+D)
d) {(A+B) + [C+D]}
View Answer
Answer: c
Explanation: ((A+B) + (C+D) is invalid because the last close parentheses is not found in
the statement.

Data Structure Multiple Choice Questions –


Binary Tree
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on “Binary
Tree”.

1. The number of edges from the root to the node is called __________ of the tree.
a) Height
b) Depth
c) Length
d) Width
View Answer
Answer: b
Explanation: The number of edges from the root to the node is called depth of the tree.
2. The number of edges from the node to the deepest leaf is called _________ of the tree.
a) Height
b) Depth
c) Length
d) Width
View Answer
Answer: a
Explanation: The number of edges from the node to the deepest leaf is called height of the
tree.

3. What is a full binary tree?


a) Each node has exactly zero or two children
b) Each node has exactly two children
c) All the leaves are at the same level
d) Each node has exactly one or two children
View Answer
Answer: a
Explanation: A full binary tree is a tree in which each node has exactly 0 or 2 children.

advertisement

4. What is a complete binary tree?


a) Each node has exactly zero or two children
b) A binary tree, which is completely filled, with the possible exception of the bottom level,
which is filled from right to left
c) A binary tree, which is completely filled, with the possible exception of the bottom level,
which is filled from left to right
d) A tree In which all nodes have degree 2
View Answer
Answer: c
Explanation: A binary tree, which is completely filled, with the possible exception of the
bottom level, which is filled from left to right is called complete binary tree. A Tree in which
each node has exactly zero or two children is called full binary tree. A Tree in which the
degree of each node is 2 except leaf nodes is called perfect binary tree.

5. What is the average case time complexity for finding the height of the binary tree?
a) h = O(loglogn)
b) h = O(nlogn)
c) h = O(n)
d) h = O(log n)
View Answer
Answer: d
Explanation: The nodes are either a part of left sub tree or the right sub tree, so we don’t
have to traverse all the nodes, this means the complexity is lesser than n, in the average
case, assuming the nodes are spread evenly, the time complexity becomes O(logn).
Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate
Now!

6. Which of the following is not an advantage of trees?


a) Hierarchical structure
b) Faster search
c) Router algorithms
d) Undo/Redo operations in a notepad
View Answer
Answer: d
Explanation: Undo/Redo operations in a notepad is an application of stack. Hierarchical
structure, Faster search, Router algorithms are advantages of trees.

Data Structure Questions and Answers –


Binary Search Tree
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on “Binary
Search Tree”.

1. Which of the following is false about a binary search tree?


a) The left child is always lesser than its parent
b) The right child is always greater than its parent
c) The left and right sub-trees should also be binary search trees
d) In order sequence gives decreasing order of elements
View Answer
Answer: d
Explanation: In order sequence of binary search trees will always give ascending order of
elements. Remaining all are true regarding binary search trees.

2. How to search for a key in a binary search tree?


a)

public Tree search(Tree root, int key)


{
if( root == null || root.key == key )
{
return root;
}
if( root.key < key )
{
return search(root.right,key);
}
else
return search(root.left,key);
}
b)

advertisement
public Tree search(Tree root, int key)
{
if( root == null || root.key == key )
{
return root;
}
if( root.key < key )
{
return search(root.left,key);
}
else
return search(root.right,key);
}
c)

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!
public Tree search(Tree root, int key)
{
if( root == null)
{
return root;
}
if( root.key < key )
{
return search(root.right,key);
}
else
return search(root.left,key);
}
d)

public Tree search(Tree root, int key)


{
if( root == null)
{
return root;
}
if( root.key < key )
{
return search(root.right.right,key);
}
else
return search(root.left.left,key);
}
View Answer

Answer: a
Explanation: As we know that the left child is lesser than the parent, if the root’s key is
greater than the given key, we look only into the left sub-tree, similarly for right sub-tree.
3. What is the speciality about the inorder traversal of a binary search tree?
a) It traverses in a non increasing order
b) It traverses in an increasing order
c) It traverses in a random fashion
d) It traverses based on priority of the node
View Answer
Answer: b
Explanation: As a binary search tree consists of elements lesser than the node to the left
and the ones greater than the node to the right, an inorder traversal will give the elements in
an increasing order.

4. What does the following piece of code do?

public void func(Tree root)


{
func(root.left());
func(root.right());
System.out.println(root.data());
}
a) Preorder traversal
b) Inorder traversal
c) Postorder traversal
d) Level order traversal
View Answer
5. What does the following piece of code do?

public void func(Tree root)


{
System.out.println(root.data());
func(root.left());
func(root.right());
}
a) Preorder traversal
b) Inorder traversal
c) Postorder traversal
d) Level order traversal
View Answer
Answer: a
Explanation: In a preorder traversal, first the parent is visited, then the left child and finally
the right child.

6. How will you find the minimum element in a binary search tree?
a)

public void min(Tree root)


{
while(root.left() != null)
{
root = root.left();
}
System.out.println(root.data());
}
b)

public void min(Tree root)


{
while(root != null)
{
root = root.left();
}
System.out.println(root.data());
}
c)

public void min(Tree root)


{
while(root.right() != null)
{
root = root.right();
}
System.out.println(root.data());
}
d)

public void min(Tree root)


{
while(root != null)
{
root = root.right();
}
System.out.println(root.data());
}
View Answer

Answer: a
Explanation: Since all the elements lesser than a given node will be towards the left,
iterating to the leftmost leaf of the root will give the minimum element in a binary search
tree.

7. How will you find the maximum element in a binary search tree?
a)

public void max(Tree root)


{
while(root.left() != null)
{
root = root.left();
}
System.out.println(root.data());
}
b)

public void max(Tree root)


{
while(root != null)
{
root = root.left();
}
System.out.println(root.data());
}
c)

public void max(Tree root)


{
while(root.right() != null)
{
root = root.right();
}
System.out.println(root.data());
}
d)

public void max(Tree root)


{
while(root != null)
{
root = root.right();
}
System.out.println(root.data());
}
View Answer

Answer: c
Explanation: Since all the elements greater than a given node are towards the right,
iterating through the tree to the rightmost leaf of the root will give the maximum element in a
binary search tree.

8. What are the worst case and average case complexities of a binary search tree?
a) O(n), O(n)
b) O(logn), O(logn)
c) O(logn), O(n)
d) O(n), O(logn)
View Answer
Answer: d
Explanation: Worst case arises when the tree is skewed(either to the left or right) in which
case you have to process all the nodes of the tree giving O(n) complexity, otherwise O(logn)
as you process only the left half or the right half of the tree.

9. Given that 2 elements are present in the tree, write a function to find the LCA(Least
Common Ancestor) of the 2 elements.
a)

public void lca(Tree root,int n1, int n2)


{
while (root != NULL)
{
if (root.data() > n1 && root.data() > n2)
root = root.right();
else if (root.data() < n1 && root.data() < n2)
root = root.left();
else break;
}
System.out.println(root.data());
}
b)

public void lca(Tree root,int n1, int n2)


{
while (root != NULL)
{
if (root.data() > n1 && root.data() < n2)
root = root.left();
else if (root.data() < n1 && root.data() > n2)
root = root.right();
else break;
}
System.out.println(root.data());
}
c)

public void lca(Tree root,int n1, int n2)


{
while (root != NULL)
{
if (root.data() > n1 && root.data() > n2)
root = root.left();
else if (root.data() < n1 && root.data() < n2)
root = root.right();
else break;
}
System.out.println(root.data());
}
d)
public void lca(Tree root,int n1, int n2)
{
while (root != NULL)
{
if (root.data() > n1 && root.data() > n2)
root = root.left.left();
else if (root.data() < n1 && root.data() < n2)
root = root.right.right();
else break;
}
System.out.println(root.data());
}
View Answer

Answer: c
Explanation: The property of a binary search tree is that the lesser elements are to the left
and greater elements are to the right, we use this property here and iterate through the tree
such that we reach a point where the 2 elements are on 2 different sides of the node, this
becomes the least common ancestor of the 2 given elements.

10. What are the conditions for an optimal binary search tree and what is its advantage?
a) The tree should not be modified and you should know how often the keys are accessed,
it improves the lookup cost
b) You should know the frequency of access of the keys, improves the lookup time
c) The tree can be modified and you should know the number of elements in the tree before
hand, it improves the deletion time
d) The tree should be just modified and improves the lookup time
View Answer
Answer: a
Explanation: For an optimal binary search The tree should not be modified and we need to
find how often keys are accessed. Optimal binary search improves the lookup cost.

Balanced Binary Tree Multiple Choice


Questions and Answers (MCQs)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Balanced Binary Tree”.

1. What will be the height of a balanced full binary tree with 8 leaves?
a) 8
b) 5
c) 6
d) 4
View Answer
Answer: d
Explanation: A balanced full binary tree with l leaves has height h, where h = log2l + 1.
So, the height of a balanced full binary tree with 8 leaves = log28 + 1 = 3 + 1 = 4.

2. The balance factor of a node in a binary tree is defined as _____


a) addition of heights of left and right subtrees
b) height of right subtree minus height of left subtree
c) height of left subtree minus height of right subtree
d) height of right subtree minus one
View Answer
Answer: c
Explanation: For a node in a binary tree, the difference between the heights of its left
subtree and right subtree is known as balance factor of the node.

3. Figure below is a balanced binary tree. If a node inserted as child of the node R, how
many nodes will become unbalanced?

a) 2
b) 1
c) 3
d) 0
View Answer
Answer: b
Explanation: Only the node P will become unbalanced, with balance factor +2.

advertisement

4. A binary tree is balanced if the difference between left and right subtree of every node is
not more than ____
a) 1
b) 3
c) 2
d) 0
View Answer
Answer: a
Explanation: In a balanced binary tree the heights of two subtrees of every node never differ
by more than 1.

5. Which of the following tree data structures is not a balanced binary tree?
a) AVL tree
b) Red-black tree
c) Splay tree
d) B-tree
View Answer
Answer: d
Explanation: All the tree data structures given in options are balanced, but B-tree can have
more than two children.

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!

6. Which of following figures is a balanced binary tree?

a)

b)

c)
d)
View Answer
Answer: b
Explanation: In Some tree diagrams, the root of tree has balance factor +2, so the tree is
not balanced. If every node in the tree is balanced, then it’s a balanced tree.

7. Balanced binary tree with n items allows the lookup of an item in ____ worst-case time.
a) O(log n)
b) O(nlog 2)
c) O(n)
d) O(1)
View Answer
Answer: a
Explanation: Searching an item in balanced binary is fast and worst-case time complexity of
the search is O(log n).

8. Which of the following data structures can be efficiently implemented using height
balanced binary search tree?
a) sets
b) priority queue
c) heap
d) both sets and priority queue
View Answer
Answer: d
Explanation: Height-Balanced binary search tree can provide an efficient implementation of
sets, priority queues.

9. Two balanced binary trees are given with m and n elements respectively. They can be
merged into a balanced binary search tree in ____ time.
a) O(m+n)
b) O(mn)
c) O(m)
d) O(mlog n)
View Answer
Answer: a
Explanation: First we store the in-order traversals of both the trees in two separate arrays
and then we can merge these sorted sequences in O(m+n) time. And then we construct the
balanced tree from this final sorted array.
10. Which of the following is an advantage of balanced binary search tree, like AVL tree,
compared to binary heap?
a) insertion takes less time
b) deletion takes less time
c) searching takes less time
d) construction of the tree takes less time than binary heap
View Answer
Answer: a
Explanation: Insertion and deletion, in both the binary heap and balanced binary search tree
takes O(log n). But searching in balanced binary search tree requires O(log n) while binary
heap takes O(n). Construction of balanced binary search tree takes O(nlog n) time while
binary heap takes O(n).

11. AVL trees are more balanced than Red-black trees.


a) True
b) False
View Answer
Answer: a
Explanation: AVL tree is more balanced than a Red-black tree because AVL tree has less
height than Red-black tree given that both trees have the same number of elements.

12. The figure shown below is a balanced binary tree. If node P is deleted, which of the
following nodes will get unbalanced?

a) U
b) M
c) H
d) A
View Answer
Answer: a
Explanation: Node U will get unbalanced if node P is deleted, because it’s balance factor
will become -2.

Self Balancing Binary Search Tree Multiple


Choice Questions and Answers (MCQs)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Self Balancing Binary Search Tree”.
1. Which of the following is not the self balancing binary search tree?
a) AVL Tree
b) 2-3-4 Tree
c) Red – Black Tree
d) Splay Tree
View Answer
Answer: b
Explanation: 2-3-4 Tree is balanced search trees. But it is not a binary tree. So, it is not a
self balancing binary tree. AVL tree, Red-Black Tree and Splay tree are self balancing
binary search tree.

2. The binary tree sort implemented using a self – balancing binary search tree takes
______ time is worst case.
a) O(n log n)
b) O(n)
c) O(n2)
d) O(log n)
View Answer
Answer: a
Explanation: The worst case running time of the binary tree sort is O(n2). But, the worst case
running time can be improved to the O(n log n) using a self – balancing binary search tree.

3. An AVL tree is a self – balancing binary search tree, in which the heights of the two child
sub trees of any node differ by _________
a) At least one
b) At most one
c) Two
d) At most two
View Answer
Answer: b
Explanation: In an AVL tree, the difference between heights of the two child sub trees of any
node is at most one. If the height differs by more than one, AVL tree performs rotations to
balance the tree.

advertisement

4. Associative arrays can be implemented using __________


a) B-tree
b) A doubly linked list
c) A single linked list
d) A self balancing binary search tree
View Answer
Answer: d
Explanation: Associative arrays can be implemented using a self balancing binary search
tree as the worst-case time performance of self – balancing binary search trees is O(log n).
5. Self – balancing binary search trees have a much better average-case time complexity
than hash tables.
a) True
b) False
View Answer
Answer: b
Explanation: For lookup, insertion and deletion hash table take O(1) time in average-case
while self – balancing binary search trees takes O(log n). Therefore, hash tables perform
better in average-case.

Note: Join free Sanfoundry classes at Telegram or Youtube

6. Which of the following is a self – balancing binary search tree?


a) 2-3 tree
b) Threaded binary tree
c) AA tree
d) Treap
View Answer
Answer: c
Explanation: An AA tree, which is a variation of red-black tree, is a self – balancing binary
search tree. 2-3 is B-tree of order 3 and Treat is a randomized binary search tree. A
threaded binary tree is not a balanced tree.

7. A self – balancing binary search tree can be used to implement ________


a) Priority queue
b) Hash table
c) Heap sort
d) Priority queue and Heap sort
View Answer
Answer: a
Explanation: Self-balancing binary search trees can be used to construct and maintain
ordered lists, to achieve the optimal worst case performance. So, self – balancing binary
search tree can be used to implement a priority queue, which is ordered list.

8. In which of the following self – balancing binary search tree the recently accessed
element can be accessed quickly?
a) AVL tree
b) AA tree
c) Splay tree
d) Red – Black tree
View Answer
Answer: c
Explanation: In a Splay tree, the recently accessed element can be accessed quickly. In
Splay tree, the frequently accessed nodes are moved towards the root so they are quick to
access again.
9. The minimum height of self balancing binary search tree with n nodes is _____
a) log2(n)
b) n
c) 2n + 1
d) 2n – 1
View Answer
Answer: a
Explanation: Self – balancing binary trees adjust the height by performing transformations
on the tree at key insertion times, in order to keep the height proportional to log2(n).

10. Binary tree sort implemented using a self balancing binary search tree takes O(n log n)
time in the worst case but still it is slower than merge sort.
a) True
b) False
View Answer
Answer: a
Explanation: The worst case performance of binary tree sort is O(n log n) when it is
implemented using a self balancing binary search tree. Self balancing binary search trees
perform transformations to balance the tree, which caused balancing overhead. Due to this
overhead, binary tree sort is slower than merger sort

AA Tree Multiple Choice Questions and


Answers (MCQs)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “AA Tree”.

1. AA Trees are implemented using?


a) Colors
b) Levels
c) Node size
d) Heaps
View Answer
Answer: b
Explanation: AA Trees are implemented using levels instead of colors to overcome the
disadvantages of Red-Black trees.

2. Which of the following is the correct definition for a horizontal link?


a) connection between node and a child of equal levels
b) connection between two nodes
c) connection between two child nodes
d) connection between root node and leaf node
View Answer
Answer: a
Explanation: A horizontal link is a connection between a node and a child of equal levels.
3. How will you remove a left horizontal link in an AA-tree?
a) by performing right rotation
b) by performing left rotation
c) by deleting both the elements
d) by inserting a new element
View Answer
Answer: a
Explanation: A left horizontal link is removed by right rotation. A right horizontal link is
removed by left rotation.

advertisement

4. What are the two different operations done in an AA-Tree?


a) shift and color
b) skew and split
c) zig and zag
d) enqueue and dequeue
View Answer
Answer: b
Explanation: A skew removes a left horizontal link by right rotation and a split removes a
right horizontal link by left rotation.

5. In an AA-tree, we process split first, followed by a skew.


a) True
b) False
View Answer
Answer: b
Explanation: In an AA-tree, skew is processed first followed by a split.

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!

6. How many different shapes does maintenance of AA-Tree need to consider?


a) 7
b) 5
c) 2
d) 3
View Answer
Answer: c
Explanation: An AA-Tree needs to consider only two shapes unlike a red-black tree which
needs to consider seven shapes of transformation.

7. What is the prime condition of AA-tree which makes it simpler than a red-black tree?
a) Only right children can be red
b) Only left children can be red
c) Right children should strictly be black
d) There should be no left children
View Answer
Answer: a
Explanation: The prime condition of AA-Tree is that only the right children can be red to
eliminate possible restructuring cases.

8. Which of the following trees is similar to that of an AA-Tree?


a) Splay Tree
b) B+ Tree
c) AVL Tree
d) Red-Black Tree
View Answer
Answer: d
Explanation: AA- Tree is a small variation of Red-Black tree. AA-Trees overcome the
complexity faced in performing insertion and deletion in Red-Black Trees.

9. What is the worst case analysis of an AA-Tree?


a) O(N)
b) O(log N)
c) O( N log N)
d) O(N2)
View Answer
Answer: b
Explanation: The worst case analysis of an AA-Tree is mathematically found to be O(log N).

10. AA-Trees makes more rotations than a red-black tree.


a) True
b) False
View Answer
Answer: a
Explanation: AA- trees make more rotations than a red-black tree since only two shapes are
considered for an AA-Tree whereas seven shapes are considered in Red-Black trees.

11. Who is the inventor of AA-Tree?


a) Arne Anderson
b) Daniel Sleator
c) Rudolf Bayer
d) Jon Louis Bentley
View Answer
Answer: a
Explanation: AA-tree is invented by Arne Anderson. Daniel Sleator invented Splay Tree.
Rudolf Bayer invented a Red-Black tree. Jon Louis Bentley invented K-d tree.

12. What should be the condition for the level of a left node?
a) It should be less than or equal to that of its parent
b) It should be greater than that of its parent
c) It should be strictly less than that of its parent
d) The level should be equal to one
View Answer
Answer: c
Explanation: The level of a left node should be strictly less than that of its parent. The level
of a right node is less than or equal to that of its parent.

13. Of the following rules that are followed by an AA-tree, which of the following is
incorrect?
1- Only right children can be red
2- Procedures are coded recursively
3- Instead of storing colors, the level of a node is stored
4- There should not be any left children
a) 1
b) 2
c) 3
d) 4
View Answer
Answer: d
Explanation: In an AA-Tree, both left and right children can be present. The only condition is
that only right children can be red.

14. In the given figure, find ‘?’.

a) left rotation
b) right rotation
c) insertion
d) deletion
View Answer
Answer: b
Explanation: B is initially the right child of X. It is then rotated right side and now, B is the left
child of P.

15. Comparing the speed of execution of Red-Black trees and AA-trees, which one has the
faster search time?
a) AA-tree
b) Red-Black tree
c) Both have an equal search time
d) It depends
View Answer
Answer: a
Explanation: Since an AA-tree tends to be flatter, AA-tree has a faster search time than a
Red-Black tree.

Data Structure Questions and Answers – AVL


Tree
This set of Data Structure Multiple Choice Questions & Answers (MCQs) focuses on “AVL
Tree”.

1. What is an AVL tree?


a) a tree which is balanced and is a height balanced tree
b) a tree which is unbalanced and is a height balanced tree
c) a tree with three children
d) a tree with atmost 3 children
View Answer
Answer: a
Explanation: It is a self balancing tree with height difference atmost 1.

2. Why we need to a binary tree which is height balanced?


a) to avoid formation of skew trees
b) to save memory
c) to attain faster memory access
d) to simplify storing
View Answer
Answer: a
Explanation: In real world dealing with random values is often not possible, the probability
that u are dealing with non random values(like sequential) leads to mostly skew trees, which
leads to worst case. hence we make height balance by rotations.

3. Which of the below diagram is following AVL tree property?

i.
ii.
a) only i
b) only i and ii
c) only ii
d) i is not a binary search tree
View Answer
Answer: b
Explanation: The property of AVL tree is it is height balanced tree with difference of atmost
1 between left and right subtrees. All AVL trees are binary search tree.

advertisement

4. What is the maximum height of an AVL tree with p nodes?


a) p
b) log(p)
c) log(p)/2
d) p⁄2
View Answer
Answer: b
Explanation: Consider height of tree to be ‘he’, then number of nodes which totals to p can
be written in terms of height as N(he)=N(he-1)+1+N(he-2). since N(he) which is p can be
written in terms of height as the beside recurrence relation which on solving gives N(he)=
O(logp) as worst case height.

5. To restore the AVL property after inserting a element, we start at the insertion point and
move towards root of that tree. is this statement true?
a) true
b) false
View Answer
Answer: a
Explanation: It is interesting to note that after insertion, only the path from that point to node
or only that subtrees are imbalanced interms of height.

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!

6. Given an empty AVL tree, how would you construct AVL tree when a set of numbers are
given without performing any rotations?
a) just build the tree with the given input
b) find the median of the set of elements given, make it as root and construct the tree
c) use trial and error
d) use dynamic programming to build the tree
View Answer
Answer: b
Explanation: Sort the given input, find the median element among them, make it as root and
construct left and right subtrees with elements lesser and greater than the median element
recursively. this ensures the subtrees differ only by height 1.

7. What maximum difference in heights between the leafs of a AVL tree is possible?
a) log(n) where n is the number of nodes
b) n where n is the number of nodes
c) 0 or 1
d) atmost 1
View Answer
Answer: a
Explanation: At every level we can form a tree with difference in height between subtrees to
be atmost 1 and so there can be log(n) such levels since height of AVL tree is log(n).

8. Consider the pseudo code:

int avl(binarysearchtree root):


if(not root)
return 0
left_tree_height = avl(left_of_root)

if(left_tree_height== -1)
return left_tree_height

right_tree_height= avl(right_of_root)

if(right_tree_height==-1)
return right_tree_height
Does the above code can check if a binary search tree is an AVL tree?
a) yes
b) no
View Answer
Answer: a
Explanation: The condition to check the height difference between left and right subtrees is
missing. if (absolute(left_tree_height – right_tree_height)>1) must be added.

9. Consider the below left-left rotation pseudo code where the node contains value pointers
to left, right child nodes and a height value and Height() function returns height value stored
at a particular node.

avltree leftrotation(avltreenode z):


avltreenode w =x-left
x-left=w-right
w-right=x
x-height=max(Height(x-left),Height(x-right))+1
w-height=max(missing)+1
return w
What is missing?
a) Height(w-left), x-height
b) Height(w-right), x-height
c) Height(w-left), x
d) Height(w-left)
View Answer
Answer: a
Explanation: In the code we are trying to make the left rotation and so we need to find
maximum of those two values.

10. Why to prefer red-black trees over AVL trees?


a) Because red-black is more rigidly balanced
b) AVL tree store balance factor in every node which costs space
c) AVL tree fails at scale
d) Red black is more efficient
View Answer
Answer: b
Explanation: Every node in an AVL tree need to store the balance factor (-1, 0, 1) hence
space costs to O(n), n being number of nodes. but in red-black we can use the sign of
number (if numbers being stored are only positive) and hence save space for storing
balancing information. there are even other reasons where redblack is mostly prefered.

Rope Multiple Choice Questions and Answers


(MCQs)
This set of Data Structures & Algorithms Multiple Choice Questions & Answers (MCQs)
focuses on “Rope”.

1. Which of the following is also known as Rope data structure?


a) Cord
b) String
c) Array
d) Linked List
View Answer
Answer: a
Explanation: Array is a linear data structure. Strings are a collection and sequence of codes,
alphabets or characters. Linked List is a linear data structure having a node containing data
input and the address of the next node. The cord is also known as the rope data structure.

2. Which type of data structure does rope represent?


a) Array
b) Linked List
c) Queue
d) Binary Tree
View Answer
Answer: d
Explanation: Rope is a special binary tree in which the end nodes contain the string and its
length. The array is a linear data structure. Linked List is a linear data structure having a
node containing data input and the address of the next node. The queue is a data structure
working on the principle of FIFO.

3. What is the time complexity for finding the node at x position where n is the length of the
rope?
a) O (log n)
b) O (n!)
c) O (n2)
d) O (1)
View Answer
Answer: a
Explanation: In order to find the node at x position in a rope data structure where N is the
length of the rope, we start a recursive search from the root node. So the time complexity
for worst case is found to be O (log N).

advertisement

4. What is the time complexity for creating a new node and then performing concatenation
in the rope data structure?
a) O (log n)
b) O (n!)
c) O (n2)
d) O (1)
View Answer
Answer: d
Explanation: In order to perform the concatenation on the rope data structure, one can
create two nodes S1 and S2 and then performing the operation in constant time that is the
time complexity is O (1).

5. What is the time complexity for splitting the string into two new string in the rope data
structure?
a) O (n2)
b) O (n!)
c) O (log n)
d) O (1)
View Answer
Answer: c
Explanation: In order to perform the splitting on the rope data structure, one can split the
given string into two new string S1 and S2 in O (log n) time. So, the time complexity for
worst case is O (log n).

Sanfoundry Certification Contest of the Month is Live. 100+ Subjects. Participate


Now!
6. Which type of binary tree does rope require to perform basic operations?
a) Unbalanced
b) Balanced
c) Complete
d) Full
View Answer
Answer: b
Explanation: To perform the basic operations on a rope data structure like insertion,
deletion, concatenation and splitting, the rope should be a balanced tree. After performing
the operations one should again re-balance the tree.

7. What is the time complexity for inserting the string and forming a new string in the rope
data structure?
a) O (log n)
b) O (n!)
c) O (n2)
d) O (1)
View Answer
Answer: a
Explanation: In order to perform the insertion on the rope data structure, one can insert the
given string at any position x to form a new string in O (log n) time. So, the time complexity
for worst case is O (log n). This can be done by one split operation and two concatenation
operations.

8. Is insertion and deletion operation faster in rope than an array?


a) True
b) False
View Answer
Answer: a
Explanation: In order to perform the insertion on the rope data structure, the time complexity
is O (log n). In order to perform the deletion on the rope data structure, the time complexity
for worst case is O (log n). While for arrays the time complexity is O (n).

9. What is the time complexity for deleting the string to form a new string in the rope data
structure?
a) O (n2)
b) O (n!)
c) O (log n)
d) O (1)
View Answer
Answer: c

You might also like