Linked List operations using Recursion
Insert first element into list:

Insert Second element into List:

Print Elements in Forward Direction:

#include<stdio.h> #include<stdlib.h> struct Node { int data; struct Node *link; }; struct Node *root=NULL; struct Node* insert(struct Node*, int); struct Node* newNode(int); void print_forward(struct Node*); void print(struct Node*); void print_backward(struct Node*); void print_reverse(struct Node*); int main() { int ch, ele; while(1) { printf(“1.Insert \n”); printf(“2.Print \n”); printf(“3.Print_reverse \n”); printf(“4.Quit \n”); printf(“Enter choice : “); scanf(“%d”, &ch); switch(ch) { case 1 : printf(“Enter element : “); scanf(“%d”, &ele); root = insert(root, ele); break; case 2 : print_forward(root); break; case 3 : print_backward(root); break; case 4 : exit(1); default : printf(“Invalid choice \n\n”); } } return 0; } struct Node* insert(struct Node *node, int ele) { if(node == NULL) { return newNode(ele); } else{ node->link = insert(node->link, ele); } return node; } struct Node* newNode(int data) { struct Node* node; node = (struct Node*)malloc(sizeof(struct Node)); node->data = data; node->link = NULL; return node; } void print_forward(struct Node* node) { if(node==NULL) printf(“Empty list”); else print(node); } void print(struct Node* node) { if(node == NULL){ return; } printf(“%d \n”, node->data); print(node->link); } void print_backward(struct Node* node) { if(node==NULL) printf(“Empty list”); else print_reverse(node); } void print_reverse(struct Node* node) { if(node == NULL) { return; } print_reverse(node->link); printf(“%d \n”, node->data); } |