Data Structures and Algorithms | Set 31 - GeeksforGeeks

27 Mar, 2017
Following questions have been asked in GATE CS 2013 exam.
1) What is the return value of f(p, p) if the value of p is initialized to 5 before the call? Note that the first parameter is passed by reference, whereas the second parameter is passed by value.
int f(int &x, int c) {
   c  = c - 1;
   if (c == 0) return 1;
   x = x + 1;
   return f(x, c) * x;
} 
(A) 3024(B) 6561(C) 55440(D) 161051
Answer (B)Since c is passed by value and x is passed by reference, all functions will have same copy of x, but different copies of c.
f(5, 5) = f(x, 4)*x = f(x, 3)*x*x = f(x, 2)*x*x*x = f(x, 1)*x*x*x*x = 1*x*x*x*x = x^4
Since x is incremented in every function call, it becomes 9 after f(x, 2) call. So the value of expression x^4 becomes 9^4 which is 6561.
#include <stdio.h>  int f(int &x, int c){    c  = c - 1;    if (c == 0) return 1;    x = x + 1;    return f(x, c) * x;}int main(){    int p = 5;    printf("%d", f(p, p));}
1) The preorder traversal sequence of a binary search tree is 30, 20, 10, 15, 25, 23, 39, 35, 42. Which one of the following is the postorder traversal sequence of the same tree?(A) 10, 20, 15, 23, 25, 35, 42, 39, 30(B) 15, 10, 25, 23, 20, 42, 35, 39, 30(C) 15, 20, 10, 23, 25, 42, 35, 39, 30(D) 15, 10, 23, 25, 20, 35, 42, 39, 30
Ans (D)The following is the constructed tree
            30
         /      \
        20       39 
       /  \     /  \
     10    25  35  42  
      \   /
      15 23

3) Consider the following function
 int unknown(int n) {
    int i, j, k = 0;
    for (i  = n/2; i <= n; i++)
        for (j = 2; j <= n; j = j * 2)
            k = k + n/2;
    return k;
 }
What is the returned value of the above function?(A) Θ(n^2)(B) Θ(n^2Logn)(C) Θ(n^3)(D) Θ(n^3Logn)
Answer (B)The outer loop runs n/2 or Θ(n) times. The inner loop runs Θ(Logn) times (Note that j is divide by 2 in every iteration). So the statement "k = k + n/2;" runs Θ(nLogn) times. The statement increases value of k by n/2. So the value of k becomes n/2*Θ(nLogn) which is Θ(n^2Logn)
4) The number of elements that can be sorted in Θ(logn) time using heap sort is(A) Θ(1)(B) Θ(sqrt(logn))(C) Θ(Log n/(Log Log n))(d) Θ(Log n)
Answer (C)Time complexity of Heap Sort is Θ(mLogm) for m input elements. For m = Θ(Log n/(Log Log n)), the value of Θ(m * Logm) will be Θ( [Log n/(Log Log n)] * [Log (Log n/(Log Log n))] ) which will be Θ( [Log n/(Log Log n)] * [ Log Log n - Log Log Log n] ) which is Θ(Log n)
5) The procedure given below is required to find and replace certain characters inside an input character string supplied in array A. The characters to be replaced are supplied in array oldc, while their respective replacement characters are supplied in array newc. Array A has a fixed length of five characters, while arrays oldc and newc contain three characters each. However, the procedure is flawed
void find_and_replace(char *A, char *oldc, char *newc) {
    for (int i = 0; i < 5; i++)
       for (int j = 0; j < 3; j++)
           if (A[i] == oldc[j]) A[i] = newc[j];
}
The procedure is tested with the following four test cases(1) oldc = "abc", newc = "dab"(2) oldc = "cde", newc = "bcd"(3) oldc = "bca", newc = "cda"(4) oldc = "abc", newc = "bac"The tester now tests the program on all input strings of length five consisting of characters ‘a’, ‘b’, ‘c’, ‘d’ and ‘e’ with duplicates allowed. If the tester carries out this testing with the four test cases given above, how many test cases will be able to capture the flaw?(A) Only one(B) Only two(C) Only three(D) All four
Answer (B)The test cases 3 and 4 are the only cases that capture the flaw. The code doesn't work properly when an old character is replaced by a new character and the new character is again replaced by another new character. This doesn't happen in test cases (1) and (2), it happens only in cases (3) and (4).
6) If array A is made to hold the string “abcde”, which of the above four test cases will be successful in exposing the flaw in this procedure?(A) None(B) 2 only(C) 3 and 4 only(D) 4 only
Answer (C)
#include <stdio.h>#include <string.h>  void find_and_replace(char *A, char *oldc, char *newc) {    for (int i = 0; i < 5; i++)       for (int j = 0; j < 3; j++)           if (A[i] == oldc[j]) A[i] = newc[j];}  int main(){    char *oldc1 = "abc", *newc1 = "dab";    char *oldc2 = "cde", *newc2 = "bcd";    char *oldc3 = "bca", *newc3 = "cda";    char *oldc4 = "abc", *newc4 = "bac";      char test[] =  "abcde";      printf("Test 2\n");    printf("%s\n", test);    find_and_replace(test, oldc2, newc2);    printf ("%s\n", test);      printf("\nTest 3\n");    strcpy(test, "abcde");    printf("%s\n", test);    find_and_replace(test, oldc3, newc3);    printf ("%s\n", test);      printf("\nTest 4\n");    strcpy(test, "abcde");    printf("%s\n", test);    find_and_replace(test, oldc4, newc4);    printf ("%s\n", test);}
Output:
Test 2
abcde
abbcd

Test 3
abcde
addde

Test 4
abcde
aacde
Please see GATE Corner for all previous year paper/solutions/explanations, syllabus, important dates, notes, etc.
Please write comments if you find any of the answers/explanations incorrect, or you want to share more information about the topics discussed above.
GATE-CS-2013
GATE-CS-DS-&-Algo
GATE CS
MCQ
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Normal Forms in DBMS
Page Replacement Algorithms in Operating Systems
Data encryption standard (DES) | Set 1
Types of Network Topology
Network Devices (Hub, Repeater, Bridge, Switch, Router, Gateways and Brouter)
Practice questions on Height balanced/AVL Tree
Operating Systems | Set 1
Computer Networks | Set 8
Data Structures and Algorithms | Set 8
Automata Theory | Set 2