Question: Consider the following C code: #include #define SIZE_OF_DATA 32 #define NUM_OF_NODES 5 typedef struct list { char *data; struct list *next; } LIST; void allocateList(LIST

Consider the following C code:

#include #define SIZE_OF_DATA 32 #define NUM_OF_NODES 5 typedef struct list { char *data; struct list *next; } LIST; void allocateList(LIST **list, int count) { if (count == 0) { *list = NULL; return; } *list = (LIST*)malloc(sizeof(LIST)); (*list)->data = (char*)malloc(SIZE_OF_DATA); allocateList(&((*list)->next), --count); } void freeList(LIST **head) { // TO BE IMPLEMENTED } int main(void) { LIST *head = NULL; allocateList(&head, NUM_OF_NODES); freeList(&head); }

Write a tail-recursive version of freeList() function.

Explain the potential for compiler optimization of such functions.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!