Description
1. In a circular linked list, the last node contains the address of the first node of the list. 2. Circular linked list can be implemented in both singly and doubly linked list. 3. The circular linked list can be traversed until the next field of node(A record called node contain data and address of next node.) contains the address of the first node of the list.
C/C++
/* C program of Program To Create And Display Circular Singly Linked List */ //Save it as create_display_circular_singly_linked_list.c #include<stdio.h> #include<malloc.h> struct node *createCircularLinkedList(int); void displayCircularLinkedList(struct node *); //Declaring node struct node{ int data; struct node *next; }; int main(){ int n; struct node *head; printf("Enter the size of linked list : "); scanf("%d",&n); //Calling function to create node head=createCircularLinkedList(n); //Calling function to display list displayCircularLinkedList(head); return 0; } struct node *createCircularLinkedList(int n){ int i; struct node *head=NULL; struct node *newNode, *ptr; for(i=0;i<n;i++){ //Creating a node newNode=(struct node *)malloc(sizeof(struct node)); //Assigning data to newly created node printf("Enter %d node data : ",(i+1)); scanf("%d",&newNode->data); /*If list is empty assign the address of newly created node to head*/ if(head==NULL){ newNode->next=newNode; head=newNode; }else{ /* If list already have few elements then loop through list and add newly created node at the end of list*/ ptr=head; while(ptr->next!=head){ ptr=ptr->next; } ptr->next=newNode; newNode->next=head; } } return head; } void displayCircularLinkedList(struct node *head){ struct node *ptr; //If list is empty if(head==NULL){ printf("The Linked List is Empty"); }else{ /*If list has elements then loop through the loop and print elements one by one in sequential manner*/ ptr=head; while(ptr->next!=head){ printf("The value of node is %d and their address is %u\n",ptr->data,ptr); ptr=ptr->next; } printf("The value of node is %d and their address is %u\n",ptr->data,ptr); } }
Java
/* Java program of Program To Create And Display Circular Singly Linked List */ //Save it as CreateDisplayCircularSinglyLinkedList.java import java.io.*; import java.util.Scanner; public class CreateDisplayCircularSinglyLinkedList { //Declaring node class Node{ int data; Node next; public Node(int data) { this.data=data; //Assigning null value to the next field this.next=null; } } public Node head=null; //Function to add node public void addNode(int data) { //Creating a new node Node newNode = new Node(data); /*If list is empty assign the address of newly created node to head*/ if(head==null) { newNode.next=newNode; head=newNode; }else { /* If list already have few elements then loop through list and add newly created node at the end of list*/ Node tail=head; while(tail.next!=head) { tail=tail.next; } tail.next=newNode; newNode.next=head; } } public void display() { Node ptr=head; //If list is empty if(ptr==null) { System.out.println("The list is empty"); return; } System.out.println("The nodes of lists are : "); /*If list has elements then loop through the loop and print elements one by one in sequential manner*/ while(ptr.next!=head) { System.out.print(ptr.data+" "); ptr=ptr.next; } System.out.print(ptr.data+" "); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); CreateDisplayCircularSinglyLinkedList list = new CreateDisplayCircularSinglyLinkedList(); System.out.println("Enter number of nodes : "); int n = scanner.nextInt(); for(int i=0;i<n;i++) { System.out.println("Enter value of "+(i+1)+" node : "); int val = scanner.nextInt(); list.addNode(val); } //Calling function to display list list.display(); } }
Related Programs
1) Program To Create And Display Singly Linked List2) Program To Add A Node In Beginning Of Singly Linked List
3) Program To Add A Node In The End Of Singly Linked List
4) Program To Add A Node Before A Given Node Singly Linked List
5) Program To Add A Node After A Given Node Singly Linked List
6) Program To Delete Node From Beginning Singly Linked List
7) Program To Delete Node From End Singly Linked List
8) Program To Delete Given Node Singly Linked List
9) Program To Delete Node Before Given Node Singly Linked List
10) Program To Delete Node After Given Node Singly Linked List
11) Program To Delete All Nodes Of Singly Linked List
12) Program To Sort Elements Of Singly Linked List
13) Program To Reverse Elements Singly Linked List
14) Program to Find Maximum And Minimum Value Node In Singly Linked List
15) Program to Search an Element In Singly Linked List
16) Program To Remove Duplicate Elements From Singly Linked List
17) Program To Add A Node At The Beginning Of Circular Linked List