Data Structures
Which of the following is faster?A binary search of an ordered set of elements in an array or a sequential search of the elements?
The binary search is faster than the sequential search. The complexity of binary search is 'log n' whereas the complexity of a sequential search is 'n'.  In a binary search, each time we proceed, we have to deal with only half of the elements of the array compared to the previous one. So the search is faster.
List out the areas in which data structures are applied extensively?
Which data structure is used to perform recursion?
Stack.Because of its LIFO (Last In First Out) property it remembers its caller and hence knows where to return to when the function has to return. Recursion makes use of system stack for storing the return addresses of the function calls.  Every recursive function has its equivalent iterative (non-recursive) function. Even when such equivalent iterative procedures are written, explicit stack is to be used.
Tree can have duplicate values :     True (or) False?
TrueTree defines the structure of an acyclic graph but does not disallow duplicates.
The size of a Tree is the number of nodes in the Tree : True (or) False?
TrueThe size denotes the number of nodes, height denotes the longest path from leaf node to root node.
Ram is told to sort a set of Data using Data structure. He has been told to use one of the following Methods InsertionSelectionExchangeLinearNow Ram says a Method from the above can not be used to sort.  Which is the method?
LinearUsing insertion we can perform insertion sort, using selection we can perform selection sort, and using exchange we can perform bubble sort. But no sorting method is possible using linear method; Linear is a searching method
Ashok is told to manipulate an Arithmetic Expression. What is the data structure he will use? Linked ListTreeGraphStack
StackStacks are used to evaluate the algebraic or arithmetic expressions using prefix or postfix notations
There are 8,15,13,14 nodes in 4 different trees. Which of them could form a full binary tree? 8151314
In general,  there are 2n – 1 nodes in a full binary tree. By the method of elimination: Full binary tree contains odd number of nodes. So there cannot be a full binary tree with 8 or 14 nodes. With 13 nodes,  you can form a complete binary tree but not a full binary tree.Full and complete binary trees are differentAll full binary trees are complete binary trees but not vice versa
ABCDEFGFull binary Tree:A binary tree is a full binary tree if and only if:Each non leaf node has exactly two child nodesAll leaf nodes have identical path lengthIt is called full since all possible node slots are occupied
ABCGDEFHIJKComplete binary Tree:A complete binary tree (of height h) satisfies the following conditions:Level 0 to h-1 represent a full binary tree of height h-1One or more nodes in level h-1 may have 0, or 1 child nodes
How many null branches are there in a binary tree with 20 nodes?
21 (null branches)Let’s consider a tree with 5 nodesSo the total number of null nodes in a binary tree of n nodes is n+1Null branches
Write an algorithm to detect loop in a linked list.	You are presented with a linked list, which may have a "loop" in it. That is, an element of the linked list may incorrectly point to a previously encountered element, which can cause an infinite loop when traversing the list. Devise an algorithm to detect whether a loop exists in a linked list. How does your answer change if you cannot change the structure of the list elements?
One possible answer is to add a flag to each element of the list. You could then traverse the list, starting at the head and tagging each element as you encounter it. If you ever encountered an element that was already tagged, you would know that you had already visited it    and that there existed a loop in the linked list. What if you are not allowed to alter the structure of the elements of the linked list?
The following algorithm will find the loop:Start with two pointers ptr1 and ptr2.Set ptr1 and ptr2 to the head of the linked list.Traverse the linked list with ptr1 moving twice as fast as ptr2 (for every two elements that ptr1 advances within the list, advance ptr2 by one element).Stop when ptr1 reaches the end of the list, or when ptr1 = ptr2.If ptr1 and ptr2 are ever equal, then there must be a loop in the linked list. If the linked list has no loops, ptr1 should reach the end of the linked list ahead of ptr2
The Operation that is not allowed in a binary search tree isLocation ChangeSearchDeletionInsertion
Location Change
Array is a type of ________________  data structure.Non HomogenousNon LinearHomogenous but not LinearBoth Homogenous and Linear
Both Homogenous and Linear.
The address of a node in a data structure is calledPointerReferencerLinkAll the above
All the above
The minimum number of edges in a connected cycle graph on n vertices is ________nn + 1n – 12n
n
The total number of passes required in a selection sort isn + 1n – 1nn * n
n – 1
The node that  does not have any sub trees is called ___________Null NodeZero NodeLeaf NodeEmpty Node
Leaf Node
Linked List is aStatic Data StructurePrimitive Data StructureDynamic Data StructureNone of the above
Dynamic Data Structure
Which data structure is needed to convert infix notation to postfix notation.TreeLinear Linked ListStackQueue
Stack
If every node u in Graph (G) is adjacent to every other node v in G, it is called as _____ graph.Directed GraphComplete GraphConnected GraphMulti Graph
Complete Graph
Bubble sort is an example ofSelection sort techniqueExchange sort techniqueQuick sort techniqueNone of the options
Exchange sort technique
How do you chose the best algorithm among available algorithms to solve a problemBased on space complexityBased on programming requirementsBased on time complexityAll the above
All the above
Which of the following are called descendants?All the leaf nodesParents, grandparentsRoot nodeChildren, grandchildren
Children, grandchildren
Choose the limitation of an array from the below options.Memory Management is very poorSearching is slowerInsertion and deletion are costlier Insertion and Deletion is not possible
Insertion and deletion are costlier (It involves shifting rest of the elements)
Areas where stacks are popularly used are.SubroutinesExpression HandlingRecursionAll the above
All the above
How would you implement queue using stack(s)?
Use a temp stackData In into queuePush the element into the original stackData Out from queuePop all the elements from stack into a temp stackpop out the first element from the temp stack
Write a C program to compare two linked lists.
int compare_linked_lists(struct node *q, struct node *r){ static int flag; if((q==NULL ) && (r==NULL)){  flag=1; } else{  if(q==NULL || r==NULL){   flag=0;  } if(q->data!=r->data){  flag=0; } else{compare_linked_lists(q->link,r->link);  } } return(flag);}
Write a C program to return the nth node from the end of a linked list.
Suppose one needs to get to the 6th node from the end in the LL. First, just keep on incrementing the first pointer (ptr1) till the number of increments cross n (which is 6 in this case) STEP 1 : 1(ptr1,ptr2) -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> 10STEP 2 : 1(ptr2) -> 2 -> 3 -> 4 -> 5 -> 6(ptr1) -> 7 -> 8 -> 9 -> 10 Now, start the second pointer (ptr2) and keep on incrementing it till the first pointer (ptr1) reaches the end of the LL. STEP 3 : 1 -> 2 -> 3 -> 4(ptr2) -> 5 -> 6 -> 7 -> 8 -> 9 -> 10 (ptr1)  So here you have the 6th node from the end pointed to by ptr2!
struct node {int data;struct node *next;}mynode;mynode * nthNode(mynode *head, int n /*pass 0 for last node*/) {mynode *ptr1,*ptr2;int count;if(!head) {return(NULL);}ptr1  = head;ptr2  = head;count = 0;
while(count < n) {count++;if((ptr1=ptr1->next)==NULL) {//Length of the linked list less than n. Error.return(NULL);} }while((ptr1=ptr1->next)!=NULL) {ptr2=ptr2->next;}return(ptr2);}
Write a C program to insert nodes into a linked list in a sorted fashion?
The solution is to iterate down the list looking for the correct place to insert the new node. That could be the end of the list, or a point just before a node which is larger than the new node. Let us assume the memory for the new node has already been allocated and a pointer to that memory is being passed to this function.// Special case code for the head endvoid linkedListInsertSorted(struct node** headReference, struct node* newNode){// Special case for the head endif (*headReference == NULL || (*headReference)->data >= newNode->data){newNode->next = *headReference;
*headReference = newNode;}else {// Locate the node before which the insertion is to happen!struct node* current = *headReference;while (current->next!=NULL && current->next->data < newNode->data){current = current->next;}newNode->next = current->next;current->next = newNode;}}
Write a C program to remove duplicates from a sorted linked list?
As the linked list is sorted, we can start from the beginning of the list and compare adjacent nodes. When adjacent nodes are the same, remove the second one. There's a tricky case where the node after the next node needs to be noted before the deletion.// Remove duplicates from a sorted listvoid RemoveDuplicates(struct node* head) {struct node* current = head; if (current == NULL) return; // do nothing if the list is empty // Compare current node with next node while(current->next!=NULL) {
  if (current->data == current->next->data)  {struct node* nextNext = current->next->next;    free(current->next);    current->next = nextNext;  }  else  {     current = current->next; // only advance if no   deletion  } }}
Write a C program to find the depth or height of a tree.
#define max(x,y) ((x)>(y)?(x):(y))structBintree { int element;structBintree *left;structBintree *right;};typedefstructBintree* Tree;int height(Tree T) { if(!T)   return -1; else  return (1 + max(height(T->left), height(T->right)))}
Write C code to determine if two trees are identical
structBintree { int element;structBintree *left;structBintree *right;};typedefstructBintree* Tree;int CheckIdentical( Tree T1, Tree T2 ){ if(!T1 && !T2) // If both tree are NULL then return true  return 1;
else if((!T1 && T2) || (T1 && !T2)) //If either of one is NULL, return false return 0;else return ((T1->element == T2->element) && CheckIdentical(T1->left, T2-i>left)&& CheckIdentical(T1->right, T2->right));  // if element of both tree are same and left and right tree is also same then bothtrees are same }
Write a  C code to create a copy of a Tree
mynode *copy(mynode *root){mynode *temp; if(root==NULL)return(NULL); temp = (mynode *) malloc(sizeof(mynode)); temp->value = root->value; temp->left  = copy(root->left); temp->right = copy(root->right); return(temp);}
Which of the following are called siblingsChildren of the same parentAll nodes in the given path upto leaf nodeAll nodes in a sub treeChildren, Grand Children
Children of the same parent
Linked List can grow and shrink in size dynamically at __________ .RuntimeCompile time
Runtime
The postfix of A+(B*C) is ABC*+AB+C*ABC+*+A*BC
ABC*+
Data structure using sequential allocation is called Linear Data StructureNon-Linear Data StructureNon-primitive Data StructureSequence Data Structure
Linear Data Structure
A linear list in which elements can be added or removed at either end but not in the middle is known asTreeQueueDequeueStack
Dequeue
The average number of key comparisons done in a successful sequential search in list of length n is n+1/2n-1/2n/2log n
n+1/2
A full binary tree with n leaves contains __________nlog2n nodes2^n nodes(2n-1) nodesn nodes
(2n-1) nodes
If a node has positive outdegree and zero indegree, it is called a __________.SourceSinkoutdegreenodeindegreenode
Source
The postfix notation for ((A+B)^C-(D-E)^(F+G)) is AB + C*DE—FG+^^-*+ABC –DE + FG^+AB*C—DE^+FGABC + CDE *-- FG +^
AB + C*DE—FG+^
If you are using C language to implement the heterogeneous linked list, what pointer type will you use?
The heterogeneous linked list contains different data types in its nodes and we need a pointer to connect them. It is not possible to use ordinary pointers for this. So we use void pointer. Void pointer is capable of storing pointer to anytype of data (eg., integer or character) as it is a generic pointer type.
What is heap sort?
A Heap is an almost complete binary tree.  In this tree, if the maximum level is i, then, upto the (i-1)th level should be complete. At level i, the number of nodes can be less than or equal to 2^i. If the number of nodes is less than 2^i, then the nodes in that level should be completely filled, only from left to rightThe property of an ascending heap is that, the root is the lowest and given any other node i, that node should be less than its left child and its right child. In a descending heap, the root should be the highest and given any other node i, that node should be greater than its left child and right child.
To sort the elements, one should create the heap first. Once the heap is created, the root has the highest value. Now we need to sort the elements in ascending order. The root can not be exchanged with the nth element so that the item in the nth position is sorted. Now, sort the remaining (n-1) elements. This can be achieved by reconstructing the heap for (n-1) elements.
heapsort()  { n = array();   // Convert the tree into an array.makeheap(n);   // Construct the initial heap. for(i=n; i>=2; i--)    {    swap(s[1],s[i]);heapsize--;keepheap(i);   }}makeheap(n) {heapsize=n; for(i=n/2; i>=1; i--)keepheap(i);}keepheap(i) {  l = 2*i;  r = 2*i + 1;  p = s[l];  q = s[r];  t = s[i];
if(l<=heapsize && p->value > t->value)largest = l;   else     largest = i;   m = s[largest];   if(r<=heapsize && q->value > m->value)     largest = r;   if(largest != i)    {      swap(s[i], s[largest]);keepheap(largest);   }}
Implement the bubble sort algorithm. How can it be improved? Write the code for selection sort, quick sort, insertion sort.
Bubble sort algorithmvoid bubble_sort(int a[], int n){  int i, j, temp;  for(j = 1; j < n; j++)  {    for(i = 0; i < (n - j); i++)    {      if(a[i] >= a[i + 1])      {        //Swap a[i], a[i+1]      }    }  }}
To improvise this basic algorithm, keep track of whether a    particular pass results in any swap or not.   If not, you can break out without wasting more cycles. void bubble_sort(int a[], int n){  int i, j, temp;  int flag;  for(j = 1; j < n; j++) {flag = 0;    for(i = 0; i < (n - j); i++) {      if(a[i] >= a[i + 1])      {//Swap a[i], a[i+1]        flag = 1;}    }    if(flag==0)break;  }}
Selection Sort Algorithmvoid selection_sort(int a[], int n) { int i, j, small, pos, temp; for(i = 0; i < (n - 1); i++) {   small = a[i];   pos   = i;   for(j = i + 1; j < n; j++)   { if(a[j] < small)  {   small = a[j];   pos   = j;  } } temp   = a[pos]; a[pos] = a[i]; a[i]   = temp;   }}
Quick Sort Algorithmint partition(int a[], int low, int high){  int i, j, temp, key;  key = a[low];  i   = low + 1;  j   = high;  while(1)    {    while(i < high && key >= a[i])i++;      while(key < a[j])j--;  if(i < j) {   temp = a[i];     a[i] = a[j];     a[j] = temp;   }   else  {       temp   = a[low];        a[low] = a[j];        a[j]   = temp;        return(j);        }   }}
void quicksort(int a[], int low, int high) {  int j;  if(low < high)    {    j = partition(a, low, high);quicksort(a, low, j - 1);quicksort(a, j + 1, high);   }}int main() {   // Populate the array aquicksort(a, 0, n - 1);}
Insertion Sort Algorithmvoid insertion_sort(int a[], int n){  int i, j, item;   for(i = 0; i < n; i++)   {     item = a[i];     j = i - 1;     while(j >=0 && item < a[j])     {       a[j + 1] = a[j];       j--;     }     a[j + 1] = item;   }}

Data Structure

  • 1.
  • 2.
    Which of thefollowing is faster?A binary search of an ordered set of elements in an array or a sequential search of the elements?
  • 3.
    The binary searchis faster than the sequential search. The complexity of binary search is 'log n' whereas the complexity of a sequential search is 'n'. In a binary search, each time we proceed, we have to deal with only half of the elements of the array compared to the previous one. So the search is faster.
  • 4.
    List out theareas in which data structures are applied extensively?
  • 6.
    Which data structureis used to perform recursion?
  • 7.
    Stack.Because of itsLIFO (Last In First Out) property it remembers its caller and hence knows where to return to when the function has to return. Recursion makes use of system stack for storing the return addresses of the function calls. Every recursive function has its equivalent iterative (non-recursive) function. Even when such equivalent iterative procedures are written, explicit stack is to be used.
  • 8.
    Tree can haveduplicate values : True (or) False?
  • 9.
    TrueTree defines thestructure of an acyclic graph but does not disallow duplicates.
  • 10.
    The size ofa Tree is the number of nodes in the Tree : True (or) False?
  • 11.
    TrueThe size denotesthe number of nodes, height denotes the longest path from leaf node to root node.
  • 12.
    Ram is toldto sort a set of Data using Data structure. He has been told to use one of the following Methods InsertionSelectionExchangeLinearNow Ram says a Method from the above can not be used to sort. Which is the method?
  • 13.
    LinearUsing insertion wecan perform insertion sort, using selection we can perform selection sort, and using exchange we can perform bubble sort. But no sorting method is possible using linear method; Linear is a searching method
  • 14.
    Ashok is toldto manipulate an Arithmetic Expression. What is the data structure he will use? Linked ListTreeGraphStack
  • 15.
    StackStacks are usedto evaluate the algebraic or arithmetic expressions using prefix or postfix notations
  • 16.
    There are 8,15,13,14nodes in 4 different trees. Which of them could form a full binary tree? 8151314
  • 17.
    In general, there are 2n – 1 nodes in a full binary tree. By the method of elimination: Full binary tree contains odd number of nodes. So there cannot be a full binary tree with 8 or 14 nodes. With 13 nodes, you can form a complete binary tree but not a full binary tree.Full and complete binary trees are differentAll full binary trees are complete binary trees but not vice versa
  • 18.
    ABCDEFGFull binary Tree:Abinary tree is a full binary tree if and only if:Each non leaf node has exactly two child nodesAll leaf nodes have identical path lengthIt is called full since all possible node slots are occupied
  • 19.
    ABCGDEFHIJKComplete binary Tree:Acomplete binary tree (of height h) satisfies the following conditions:Level 0 to h-1 represent a full binary tree of height h-1One or more nodes in level h-1 may have 0, or 1 child nodes
  • 20.
    How many nullbranches are there in a binary tree with 20 nodes?
  • 21.
    21 (null branches)Let’sconsider a tree with 5 nodesSo the total number of null nodes in a binary tree of n nodes is n+1Null branches
  • 22.
    Write an algorithmto detect loop in a linked list. You are presented with a linked list, which may have a "loop" in it. That is, an element of the linked list may incorrectly point to a previously encountered element, which can cause an infinite loop when traversing the list. Devise an algorithm to detect whether a loop exists in a linked list. How does your answer change if you cannot change the structure of the list elements?
  • 23.
    One possible answeris to add a flag to each element of the list. You could then traverse the list, starting at the head and tagging each element as you encounter it. If you ever encountered an element that was already tagged, you would know that you had already visited it and that there existed a loop in the linked list. What if you are not allowed to alter the structure of the elements of the linked list?
  • 24.
    The following algorithmwill find the loop:Start with two pointers ptr1 and ptr2.Set ptr1 and ptr2 to the head of the linked list.Traverse the linked list with ptr1 moving twice as fast as ptr2 (for every two elements that ptr1 advances within the list, advance ptr2 by one element).Stop when ptr1 reaches the end of the list, or when ptr1 = ptr2.If ptr1 and ptr2 are ever equal, then there must be a loop in the linked list. If the linked list has no loops, ptr1 should reach the end of the linked list ahead of ptr2
  • 25.
    The Operation thatis not allowed in a binary search tree isLocation ChangeSearchDeletionInsertion
  • 26.
  • 27.
    Array is atype of ________________ data structure.Non HomogenousNon LinearHomogenous but not LinearBoth Homogenous and Linear
  • 28.
  • 29.
    The address ofa node in a data structure is calledPointerReferencerLinkAll the above
  • 30.
  • 31.
    The minimum numberof edges in a connected cycle graph on n vertices is ________nn + 1n – 12n
  • 32.
  • 33.
    The total numberof passes required in a selection sort isn + 1n – 1nn * n
  • 34.
  • 35.
    The node that does not have any sub trees is called ___________Null NodeZero NodeLeaf NodeEmpty Node
  • 36.
  • 37.
    Linked List isaStatic Data StructurePrimitive Data StructureDynamic Data StructureNone of the above
  • 38.
  • 39.
    Which data structureis needed to convert infix notation to postfix notation.TreeLinear Linked ListStackQueue
  • 40.
  • 41.
    If every nodeu in Graph (G) is adjacent to every other node v in G, it is called as _____ graph.Directed GraphComplete GraphConnected GraphMulti Graph
  • 42.
  • 43.
    Bubble sort isan example ofSelection sort techniqueExchange sort techniqueQuick sort techniqueNone of the options
  • 44.
  • 45.
    How do youchose the best algorithm among available algorithms to solve a problemBased on space complexityBased on programming requirementsBased on time complexityAll the above
  • 46.
  • 47.
    Which of thefollowing are called descendants?All the leaf nodesParents, grandparentsRoot nodeChildren, grandchildren
  • 48.
  • 49.
    Choose the limitationof an array from the below options.Memory Management is very poorSearching is slowerInsertion and deletion are costlier Insertion and Deletion is not possible
  • 50.
    Insertion and deletionare costlier (It involves shifting rest of the elements)
  • 51.
    Areas where stacksare popularly used are.SubroutinesExpression HandlingRecursionAll the above
  • 52.
  • 53.
    How would youimplement queue using stack(s)?
  • 54.
    Use a tempstackData In into queuePush the element into the original stackData Out from queuePop all the elements from stack into a temp stackpop out the first element from the temp stack
  • 55.
    Write a Cprogram to compare two linked lists.
  • 56.
    int compare_linked_lists(struct node*q, struct node *r){ static int flag; if((q==NULL ) && (r==NULL)){ flag=1; } else{ if(q==NULL || r==NULL){ flag=0; } if(q->data!=r->data){ flag=0; } else{compare_linked_lists(q->link,r->link); } } return(flag);}
  • 57.
    Write a Cprogram to return the nth node from the end of a linked list.
  • 58.
    Suppose one needsto get to the 6th node from the end in the LL. First, just keep on incrementing the first pointer (ptr1) till the number of increments cross n (which is 6 in this case) STEP 1 : 1(ptr1,ptr2) -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> 10STEP 2 : 1(ptr2) -> 2 -> 3 -> 4 -> 5 -> 6(ptr1) -> 7 -> 8 -> 9 -> 10 Now, start the second pointer (ptr2) and keep on incrementing it till the first pointer (ptr1) reaches the end of the LL. STEP 3 : 1 -> 2 -> 3 -> 4(ptr2) -> 5 -> 6 -> 7 -> 8 -> 9 -> 10 (ptr1) So here you have the 6th node from the end pointed to by ptr2!
  • 59.
    struct node {intdata;struct node *next;}mynode;mynode * nthNode(mynode *head, int n /*pass 0 for last node*/) {mynode *ptr1,*ptr2;int count;if(!head) {return(NULL);}ptr1 = head;ptr2 = head;count = 0;
  • 60.
    while(count < n){count++;if((ptr1=ptr1->next)==NULL) {//Length of the linked list less than n. Error.return(NULL);} }while((ptr1=ptr1->next)!=NULL) {ptr2=ptr2->next;}return(ptr2);}
  • 61.
    Write a Cprogram to insert nodes into a linked list in a sorted fashion?
  • 62.
    The solution isto iterate down the list looking for the correct place to insert the new node. That could be the end of the list, or a point just before a node which is larger than the new node. Let us assume the memory for the new node has already been allocated and a pointer to that memory is being passed to this function.// Special case code for the head endvoid linkedListInsertSorted(struct node** headReference, struct node* newNode){// Special case for the head endif (*headReference == NULL || (*headReference)->data >= newNode->data){newNode->next = *headReference;
  • 63.
    *headReference = newNode;}else{// Locate the node before which the insertion is to happen!struct node* current = *headReference;while (current->next!=NULL && current->next->data < newNode->data){current = current->next;}newNode->next = current->next;current->next = newNode;}}
  • 64.
    Write a Cprogram to remove duplicates from a sorted linked list?
  • 65.
    As the linkedlist is sorted, we can start from the beginning of the list and compare adjacent nodes. When adjacent nodes are the same, remove the second one. There's a tricky case where the node after the next node needs to be noted before the deletion.// Remove duplicates from a sorted listvoid RemoveDuplicates(struct node* head) {struct node* current = head; if (current == NULL) return; // do nothing if the list is empty // Compare current node with next node while(current->next!=NULL) {
  • 66.
    if(current->data == current->next->data) {struct node* nextNext = current->next->next; free(current->next); current->next = nextNext; } else { current = current->next; // only advance if no deletion } }}
  • 67.
    Write a Cprogram to find the depth or height of a tree.
  • 68.
    #define max(x,y) ((x)>(y)?(x):(y))structBintree{ int element;structBintree *left;structBintree *right;};typedefstructBintree* Tree;int height(Tree T) { if(!T) return -1; else return (1 + max(height(T->left), height(T->right)))}
  • 69.
    Write C codeto determine if two trees are identical
  • 70.
    structBintree { intelement;structBintree *left;structBintree *right;};typedefstructBintree* Tree;int CheckIdentical( Tree T1, Tree T2 ){ if(!T1 && !T2) // If both tree are NULL then return true return 1;
  • 71.
    else if((!T1 &&T2) || (T1 && !T2)) //If either of one is NULL, return false return 0;else return ((T1->element == T2->element) && CheckIdentical(T1->left, T2-i>left)&& CheckIdentical(T1->right, T2->right)); // if element of both tree are same and left and right tree is also same then bothtrees are same }
  • 72.
    Write a C code to create a copy of a Tree
  • 73.
    mynode *copy(mynode *root){mynode*temp; if(root==NULL)return(NULL); temp = (mynode *) malloc(sizeof(mynode)); temp->value = root->value; temp->left = copy(root->left); temp->right = copy(root->right); return(temp);}
  • 74.
    Which of thefollowing are called siblingsChildren of the same parentAll nodes in the given path upto leaf nodeAll nodes in a sub treeChildren, Grand Children
  • 75.
    Children of thesame parent
  • 76.
    Linked List cangrow and shrink in size dynamically at __________ .RuntimeCompile time
  • 77.
  • 78.
    The postfix ofA+(B*C) is ABC*+AB+C*ABC+*+A*BC
  • 79.
  • 80.
    Data structure usingsequential allocation is called Linear Data StructureNon-Linear Data StructureNon-primitive Data StructureSequence Data Structure
  • 81.
  • 82.
    A linear listin which elements can be added or removed at either end but not in the middle is known asTreeQueueDequeueStack
  • 83.
  • 84.
    The average numberof key comparisons done in a successful sequential search in list of length n is n+1/2n-1/2n/2log n
  • 85.
  • 86.
    A full binarytree with n leaves contains __________nlog2n nodes2^n nodes(2n-1) nodesn nodes
  • 87.
  • 88.
    If a nodehas positive outdegree and zero indegree, it is called a __________.SourceSinkoutdegreenodeindegreenode
  • 89.
  • 90.
    The postfix notationfor ((A+B)^C-(D-E)^(F+G)) is AB + C*DE—FG+^^-*+ABC –DE + FG^+AB*C—DE^+FGABC + CDE *-- FG +^
  • 91.
  • 92.
    If you areusing C language to implement the heterogeneous linked list, what pointer type will you use?
  • 93.
    The heterogeneous linkedlist contains different data types in its nodes and we need a pointer to connect them. It is not possible to use ordinary pointers for this. So we use void pointer. Void pointer is capable of storing pointer to anytype of data (eg., integer or character) as it is a generic pointer type.
  • 94.
  • 95.
    A Heap isan almost complete binary tree. In this tree, if the maximum level is i, then, upto the (i-1)th level should be complete. At level i, the number of nodes can be less than or equal to 2^i. If the number of nodes is less than 2^i, then the nodes in that level should be completely filled, only from left to rightThe property of an ascending heap is that, the root is the lowest and given any other node i, that node should be less than its left child and its right child. In a descending heap, the root should be the highest and given any other node i, that node should be greater than its left child and right child.
  • 96.
    To sort theelements, one should create the heap first. Once the heap is created, the root has the highest value. Now we need to sort the elements in ascending order. The root can not be exchanged with the nth element so that the item in the nth position is sorted. Now, sort the remaining (n-1) elements. This can be achieved by reconstructing the heap for (n-1) elements.
  • 97.
    heapsort() {n = array(); // Convert the tree into an array.makeheap(n); // Construct the initial heap. for(i=n; i>=2; i--) { swap(s[1],s[i]);heapsize--;keepheap(i); }}makeheap(n) {heapsize=n; for(i=n/2; i>=1; i--)keepheap(i);}keepheap(i) { l = 2*i; r = 2*i + 1; p = s[l]; q = s[r]; t = s[i];
  • 98.
    if(l<=heapsize && p->value> t->value)largest = l; else largest = i; m = s[largest]; if(r<=heapsize && q->value > m->value) largest = r; if(largest != i) { swap(s[i], s[largest]);keepheap(largest); }}
  • 99.
    Implement the bubblesort algorithm. How can it be improved? Write the code for selection sort, quick sort, insertion sort.
  • 100.
    Bubble sort algorithmvoidbubble_sort(int a[], int n){ int i, j, temp; for(j = 1; j < n; j++) { for(i = 0; i < (n - j); i++) { if(a[i] >= a[i + 1]) { //Swap a[i], a[i+1] } } }}
  • 101.
    To improvise thisbasic algorithm, keep track of whether a particular pass results in any swap or not. If not, you can break out without wasting more cycles. void bubble_sort(int a[], int n){ int i, j, temp; int flag; for(j = 1; j < n; j++) {flag = 0; for(i = 0; i < (n - j); i++) { if(a[i] >= a[i + 1]) {//Swap a[i], a[i+1] flag = 1;} } if(flag==0)break; }}
  • 102.
    Selection Sort Algorithmvoidselection_sort(int a[], int n) { int i, j, small, pos, temp; for(i = 0; i < (n - 1); i++) { small = a[i]; pos = i; for(j = i + 1; j < n; j++) { if(a[j] < small) { small = a[j]; pos = j; } } temp = a[pos]; a[pos] = a[i]; a[i] = temp; }}
  • 103.
    Quick Sort Algorithmintpartition(int a[], int low, int high){ int i, j, temp, key; key = a[low]; i = low + 1; j = high; while(1) { while(i < high && key >= a[i])i++; while(key < a[j])j--; if(i < j) { temp = a[i]; a[i] = a[j]; a[j] = temp; } else { temp = a[low]; a[low] = a[j]; a[j] = temp; return(j); } }}
  • 104.
    void quicksort(int a[],int low, int high) { int j; if(low < high) { j = partition(a, low, high);quicksort(a, low, j - 1);quicksort(a, j + 1, high); }}int main() { // Populate the array aquicksort(a, 0, n - 1);}
  • 105.
    Insertion Sort Algorithmvoidinsertion_sort(int a[], int n){ int i, j, item; for(i = 0; i < n; i++) { item = a[i]; j = i - 1; while(j >=0 && item < a[j]) { a[j + 1] = a[j]; j--; } a[j + 1] = item; }}