Miscellaneous On Data Structures - Study Mode

[#1046] What will be the time complexity of the given code? #include <stdio.h>
#include <string.h>
#include <iostream.h>
using namespace std
void swap(char *x, char *y)
{
char temp
temp = *x
*x = *y
*y = temp
}

void func(char *a, int l, int r)
{
int i
if (l == r)
cout<<a<<” ,”
else
{
for (i = l
i <= r
i++)
{
swap((a+l), (a+i))
func(a, l+1, r)
swap((a+l), (a+i))
}
}
}

int main()
{
char str[] = "AB"
int n = strlen(str)
func(str, 0, n-1)
return 0
}
Correct Answer

(B) O(n * n!)

[#1047] What is the space complexity of the following recursive implementation to find the factorial of a number? int fact(int n)
{
if(_________)
return 1
return n * fact(n - 1)
}
int main()
{
int n = 5
int ans = fact(n)
printf("%d",ans)
return 0
}
Correct Answer

(A) O(1)

[#1048] What is the output of the following code? #include<stdio.h>
int recursive_search_num(int *arr, int num, int idx, int len)
{
if(idx == len)
return -1
if(arr[idx] == num)
return idx
return recursive_search_num(arr, num, idx+1, len)
}
int main()
{
int arr[8] ={1,2,3,3,3,5,6,7},num=5,len = 8
int indx = recursive_search_num(arr,num,0,len)
printf("Index of %d is %d",num,indx)
return 0
}
Correct Answer

(A) Index of 5 is 5

[#1049] How many times will the function fact() be called when the following code is executed? int fact(int n)
{
if(n == 0)
return 1
return n * fact(n - 1)
}
int main()
{
int n = 5
int ans = fact(n)
printf("%d",ans)
return 0
}
Correct Answer

(C) 6

[#1050] How many times will the function recursive_get_min() be called when the following code is executed? #include<stdio.h>
#include<stdlib.h>
struct Node
{
int val
struct Node* next
}*head
int min_of_two(int a, int b)
{
if(a < b)
return a
return b
}
int recursive_get_min(struct Node* temp)
{
if(temp->next == 0)
return temp->val
return min_of_two(temp->val,recursive_get_min(temp->next))
}
int main()
{
int n = 5, arr[5] ={1,1,1,1,1},i
struct Node *temp, *newNode
head = (struct Node*)malloc(sizeof(struct Node))
head -> next =0
temp = head
for(i=0
i<n
i++)
{
newNode =(struct Node*)malloc(sizeof(struct Node))
newNode->next = 0
newNode->val = arr[i]
temp->next =newNode
temp = temp->next
}
int min_num = recursive_get_min(head->next)
printf("%d",min_num)
return 0
}
Correct Answer

(B) 5