From 1f5d4b469d62148173d43864659e19c1e6164e07 Mon Sep 17 00:00:00 2001 From: hustlesid <56680899+hustlesid@users.noreply.github.com> Date: Mon, 3 Oct 2022 21:49:31 +0530 Subject: [PATCH] circular linked list in c --- .../C/linked-lists/circular_linkedlist.c | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 algorithms/C/linked-lists/circular_linkedlist.c diff --git a/algorithms/C/linked-lists/circular_linkedlist.c b/algorithms/C/linked-lists/circular_linkedlist.c new file mode 100644 index 00000000..2b1d086a --- /dev/null +++ b/algorithms/C/linked-lists/circular_linkedlist.c @@ -0,0 +1,64 @@ +#include +#include + +/* structure node Created */ +struct Node +{ + int data; + struct Node *next; +}; + +/* insert the node at the stating of a Circular +linked list */ +void push(struct Node **head_ref, int data) +{ + struct Node *ptr1 = (struct Node *)malloc(sizeof(struct Node)); + struct Node *temp = *head_ref; + ptr1->data = data; + ptr1->next = *head_ref; + + /* If linked list is not NULL then set the next of last node */ + if (*head_ref != NULL) + { + while (temp->next != *head_ref) + temp = temp->next; + temp->next = ptr1; + } + else + ptr1->next = ptr1; /*For the first node */ + + *head_ref = ptr1; +} + +/* Function to print nodes in a given Circular linked list */ +void printList(struct Node *head) +{ + struct Node *temp = head; + if (head != NULL) + { + do + { + printf("%d ", temp->data); + temp = temp->next; + } while (temp != head); + } +} + +/* Driver program to test above functions */ +int main() +{ + /* Initialize lists as empty */ + struct Node *head = NULL; + + /* Created linked list will be 11->2->56->12 */ + push(&head, 12); + push(&head, 56); + push(&head, 2); + push(&head, 11); + + printf(" Contents of Circular Linked List \n "); + printList(head); + + getchar(); + return 0; +}