C Programming Code Examples C > Linked Lists Code Examples C Program to Convert a given Singly Linked List to a Circular List C Program to Convert a given Singly Linked List to a Circular List #include <stdio.h> #include <stdlib.h> struct node { int j; struct node *next; }; void create(struct node **); void tocircular(struct node **); void release(struct node **); void display(struct node *); int main() { struct node *p = NULL; int result, count; printf("Enter data into the list\n"); create(&p); tocircular(&p); printf("Circular list generated\n"); display(p); release (&p); return 0; } void tocircular(struct node **p) { struct node *rear; rear = *p; while (rear->next != NULL) { rear = rear->next; } rear->next = *p; /*After this the singly linked list is now circular*/ } void create(struct node **head) { int c, ch; struct node *temp; do { printf("Enter number: "); scanf("%d", &c); temp = (struct node *)malloc(sizeof(struct node)); temp->j = c; temp->next = *head; *head = temp; printf("Do you wish to continue [1/0]: "); scanf("%d", &ch); } while (ch != 0); printf("\n"); } void display(struct node *head) { struct node *temp = head; printf("Displaying the list elements\n"); printf("%d\t", temp->j); temp = temp->next; while (head != temp) { printf("%d\t", temp->j); temp = temp->next; } printf("and back to %d\t%d ..\n", temp->j, temp->next->j); } void release(struct node **head) { struct node *temp = *head; temp = temp->next; (*head)->next = NULL; (*head) = temp->next; while ((*head) != NULL) { free(temp); temp = *head; (*head) = (*head)->next; } }