This program implements the Circular Linked List Program in C.
In this Circular Linked List Program Circular Linked List is a variation of the Linked list in which the first element points to the last element and the last element points to the first element.
Both Singly Linked List and Doubly Linked List can be made into a circular linked list.
To understand this example, you should have the knowledge of the following Data Structures topics:
Program to implement Circular Linked List
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> struct node { int data; int key; struct node *next; }; struct node *head = NULL; struct node *current = NULL; bool isEmpty() { return head == NULL; } int length() { int length = 0; //if list is empty if(head == NULL) { return 0; } current = head->next; while(current != head) { length++; current = current->next; } return length; } //insert link at the first location void insertFirst(int key, int data) { //create a link struct node *link = (struct node*) malloc(sizeof(struct node)); link->key = key; link->data = data; if (isEmpty()) { head = link; head->next = head; } else { //point it to old first node link->next = head; //point first to new first node head = link; } } //delete first item struct node * deleteFirst() { //save reference to first link struct node *tempLink = head; if(head->next == head) { head = NULL; return tempLink; } //mark next to first link as first head = head->next; //return the deleted link return tempLink; } //display the list void printList() { struct node *ptr = head; printf("\n[ "); //start from the beginning if(head != NULL) { while(ptr->next != ptr) { printf("(%d,%d) ",ptr->key,ptr->data); ptr = ptr->next; } } printf(" ]"); } main() { insertFirst(1,10); insertFirst(2,20); insertFirst(3,30); insertFirst(4,1); insertFirst(5,40); insertFirst(6,56); printf("Original List: "); //print list printList(); while(!isEmpty()) { struct node *temp = deleteFirst(); printf("\nDeleted value:"); printf("(%d,%d) ",temp->key,temp->data); } printf("\nList after deleting all items: "); printList(); }
Output
Original List: [ (6,56) (5,40) (4,1) (3,30) (2,20) ] Deleted value:(6,56) Deleted value:(5,40) Deleted value:(4,1) Deleted value:(3,30) Deleted value:(2,20) Deleted value:(1,10) List after deleting all items: [ ]
Ask your questions and clarify your/others doubts on C Circular Linked List. Documentation.
Please write to us at [email protected] to report any issue with the above content or for feedback.
Related Programs
- C Program to Print an Integer (Entered by the User)
- C Program to Add Two Integers
- C program for prime number
- C program for factorial
- C program for Fibonacci series
- C Program to Compute Quotient and Remainder
- C Program to Find ASCII Value of a Character
- C Program to Swap Two Numbers
- C Program to Demonstrate the Working of Keyword long
- C Program to Find the Size of int, float, double and char
- C Program to Multiply two Floating Point Numbers
- C Program for Stack