w3resource

C Exercises: Delete node from the beginning of a circular linked list


16. Delete from Beginning of Circular Linked List

Write a program in C to delete a node from the beginning of a circular linked list.

Visual Presentation:

C Exercises: Delete node from the beginning of a circular linked list

Sample Solution:

C Code:

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


// Structure definition for a node in a circular linked list
struct node {
    int num;
    struct node *nextptr;
} *stnode;

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

int main() {
    int n, a;
    stnode = NULL; // Initializing the start pointer of the circular list to NULL

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

    // Creating a circular linked list
    ClListcreation(n);
    a = 1; // Flag to display the initial list
    displayClList(a);

    // Deleting the first node from the circular list
    ClListDeleteFirstNode();
    a = 2; // Flag to display the list after deletion
    displayClList(a);

    return 0;
}

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

    if (n >= 1) {
        // Allocating memory for the first node and initializing it
        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;
            preptr->nextptr = newnode;
            preptr = newnode;
        }
        preptr->nextptr = stnode; // Linking the last node with the first node to form a circular list
    }
}

// Function to delete the first node from the circular linked list
void ClListDeleteFirstNode() {
    struct node *p = stnode;
    struct node *store;

    while (p->nextptr != stnode) {
        p = p->nextptr;
    }
    store = stnode;
    stnode = stnode->nextptr;
    printf("\n The deleted node is -> %d", store->num);
    p->nextptr = stnode;
    free(store);
}

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

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

        // Loop to display nodes in the circular list
        do {
            printf(" Data %d = %d\n", n, tmp->num);
            tmp = tmp->nextptr;
            n++;
        } while (tmp != stnode);
    }
}

Sample Output:

 Circular Linked List : Delete node from the beginning of 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                                                                                                   
                                                                                                              
 The deleted node is -> 2                                                                                     
 After deletion the new list are :                                                                            
 Data 1 = 5                                                                                                   
 Data 2 = 8

Flowchart:

Flowchart: Delete node from the beginning of a circular linked list

ClListcreation() :

Flowchart: Delete node from the beginning of a circular linked list

ClListDeleteFirstNode() :

Flowchart: Delete node from the beginning of a circular linked list

displayClList() :

Flowchart: Delete node from the beginning of a circular linked list

For more Practice: Solve these Related Problems:

  • Write a C program to delete the first node of a circular linked list and adjust the pointers to maintain circularity.
  • Write a C program to remove the head node from a circular linked list and display the list starting from the new head.
  • Write a C program to delete the first node of a circular linked list only if its value meets a specific condition.
  • Write a C program to recursively remove the beginning node of a circular linked list and verify that the list remains circular.

Go to:


PREV : Insert at Any Position in Circular Linked List.
NEXT : Delete from Middle of Circular Linked List.

C Programming Code Editor:



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.