8. What will be the result of executing the following code?
#include<stdio.h>
#include<stdlib.h>
struct Node {
int val;
struct Node* next;
} *head;
int max_of_two(int a, int b) {
if (a > b)
return a;
return b;
}
int recursive_get_max(struct Node* temp) {
if (temp->next == NULL)
return temp->val;
return max_of_two(temp->val, recursive_get_max(temp->next));
}
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 == NULL)
return temp->val;
return min_of_two(temp->val, recursive_get_min(temp->next));
}
int main() {
int n = 9, arr[9] = {1, 3, 2, 4, 5, 0, 5, 6, 7}, i;
struct Node *temp, *newNode;
head = (struct Node*)malloc(sizeof(struct Node));
head->next = NULL;
temp = head;
for (i = 0; i < n; i++) {
newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->next = NULL;
newNode->val = arr[i];
temp->next = newNode;
temp = temp->next;
}
int max_num = recursive_get_max(head->next);
int min_num = recursive_get_min(head->next);
printf("%d %d", max_num, min_num);
return 0;
}
What output will be produced by this code?