w3resource

C Exercises: Create and display a circular linked list


12. Circular Linked List Creation and Display

Write a program in C to create and display a circular linked list.

Visual Presentation:

C Exercises: Create and display a circular linked list

Sample Solution:

C Code:

#include <stdio.h>
#include <stdlib.h>

struct node {
    int num;
    struct node *nextptr;
}*stnode;

// Function prototypes
void ClListcreation(int n);
void displayClList();

int main() {
    int n;
    stnode = NULL;

    // User input for the number of nodes
    printf("\n\n Circular Linked List : Create and display a circular linked list :\n");
    printf("-----------------------------------------------------------------------\n");
    printf(" Input the number of nodes : ");
    scanf("%d", &n);

    // Creating a circular linked list
    ClListcreation(n);
    displayClList();
    return 0;
}

// Function to create a circular linked list
void ClListcreation(int n) {
    int i, num;
    struct node *preptr, *newnode;

    if (n >= 1) {
        stnode = (struct node *)malloc(sizeof(struct node));

        printf(" Input data for node 1 : ");
        scanf("%d", &num);
        stnode->num = num;
        stnode->nextptr = NULL;
        preptr = stnode;

        // Loop to create subsequent nodes and link them to form a circular list
        for (i = 2; i <= n; i++) {
            newnode = (struct node *)malloc(sizeof(struct node));
            printf(" Input data for node %d : ", i);
            scanf("%d", &num);
            newnode->num = num;
            newnode->nextptr = NULL; // Setting the next address of the new node as NULL
            preptr->nextptr = newnode; // Linking the previous node with the new node
            preptr = newnode; // Advancing the previous node to the new node
        }
        preptr->nextptr = stnode; // Linking the last node with the first node to form a circular list
    }
}

// Function to display the circular linked list
void displayClList() {
    struct node *tmp;
    int n = 1;

    if (stnode == NULL) {
        printf(" No data found in the List yet.");
    } else {
        tmp = stnode;
        printf("\n\n Data entered in the list are :\n");

        // Loop to display nodes in the circular list
        do {
            printf(" Data %d = %d\n", n, tmp->num);
            tmp = tmp->nextptr; // Moving to the next node
            n++;
        } while (tmp != stnode); // Checking if we have reached the first node again
    }
}

Sample Output:

 Circular Linked List : Create and display a circular linked list :                                           
-----------------------------------------------------------------------                                       
 Input the number of nodes : 3                                                                                
 Input data for node 1 : 2                                                                                    
 Input data for node 2 : 5                                                                                    
 Input data for node 3 : 8                                                                                    
                                                                                                              
 Data entered in the list are :                                                                               
 Data 1 = 2                                                                                                   
 Data 2 = 5                                                                                                   
 Data 3 = 8

Flowchart:

Flowchart: Create and display a circular linked list

ClListcreation() :

Flowchart: Create and display a circular linked list

displayClList() :

Flowchart: Create and display a circular linked list

For more Practice: Solve these Related Problems:

  • Write a C program to create a circular linked list with nodes entered by the user and display the list using a do-while loop.
  • Write a C program to dynamically build a circular linked list and traverse it until it loops back to the head.
  • Write a C program to create a circular linked list where each node contains a random number, then display the list.
  • Write a C program to build a circular linked list and print its elements continuously for a specified number of iterations.

Go to:


PREV : Find Maximum Value in Doubly Linked List.
NEXT : Insert at Beginning of Circular Linked List.

C Practice online:



Have another way to solve this solution? Contribute your code (and comments) through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.