55 lines
1.1 KiB
C
55 lines
1.1 KiB
C
// Write recursive functions for i) Creating a linked list ii) Traversing a linked list.
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
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);
|
|
}
|