// Write recursive functions for i) Creating a linked list ii) Traversing a linked list. #include #include struct node { int data; struct node *link; }; struct node *create(int); void traverse(struct node *); void freeList(struct node *); int main() { struct node *list; int n; printf("Enter the number of nodes: "); scanf("%d", &n); list = create(n); printf("Linked list created:\n"); traverse(list); freeList(list); return 0; } struct node *create(int n) { struct node *temp; if (n == 0) return NULL; temp = (struct node *)malloc(sizeof(struct node)); if (temp == NULL) { printf("Memory allocation failed\n"); exit(1); } printf("Enter data: "); scanf("%d", &temp->data); temp->link = create(n - 1); return temp; } void traverse(struct node *list) { if (list == NULL) return; printf("%d ", list->data); traverse(list->link); } void freeList(struct node *list) { if (list == NULL) return; freeList(list->link); free(list); }