Implement Circular Doubly Linked List using C Program

In this tutorial, we will learn how to implement circular doubly linked list using C program? By Piyas Mukherjee Last updated : August 02, 2023

Input

The data of each node.

Output

The circular doubly linked list.

Data Structure Used

A circular doubly linked list where each node contains a data part, say data and two link parts say prev (to store the address of immediate previous node) and say next (to store the address of immediate next node).

Pseudo Code

Begin
head=NULL
//get a memory block of type node and store it in the pointer temp
temp=getnode(node)		
If(temp!=NULL)
	Print("Enter the element in the list : ",temp->data)
	temp->next=head;
	If(head=NULL)
		head=temp
		temp->prev=head
		temp->next=head
	Else
		temp1=head;
		while(temp1->next!=head)
			begin
			temp1=temp1->next;
		End while
			temp1->next=temp;
			temp->prev=temp1;
	End IF-Else	
Else
	Printf ("Memory not avilable...node allocation is not possible")
End IF-ELSE
End

C program to implement circular doubly linked list

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

//cicular double linked list structure
typedef struct list {
    int data;
    struct list* next;
    struct list* prev;
} node;

void display(node* temp)
{
    //now temp1 is head basically
    node* temp1 = temp;
    printf("The list is as follows :\n%d->", temp->data);
    temp = temp->next;
    
    //which not circle back to head node
    while (temp != temp1) {
        printf("%d->", temp->data);
        temp = temp->next;
    }
    printf("%d\n", temp1->data);
    
    return;
}

int main()
{
    node *head = NULL, *temp, *temp1;
    int choice;

    //building circular double linked list as input
    do {
        temp = (node*)malloc(sizeof(node));
        if (temp != NULL) {
            printf("\nEnter the element in the list : ");
            scanf("%d", &temp->data);
            temp->next = head;
            if (head == NULL) {
                head = temp;
                temp->prev = head;
                temp->next = head;
            }
            else {
                temp1 = head;
                while (temp1->next != head) {
                    temp1 = temp1->next;
                }
                temp1->next = temp;
                temp->prev = temp1;
            }
        }
        else {
            printf("\nMemory not avilable...node allocation is not possible");
        }
        printf("\nIf you wish to add more data on the list enter 1 : ");
        scanf("%d", &choice);
    } while (choice == 1);

    display(head);

    return 0;
}

Output

Enter the element in the list : 1

If you wish to add more data on the list enter 1 : 1

Enter the element in the list : 2

If you wish to add more data on the list enter 1 : 1

Enter the element in the list : 3

If you wish to add more data on the list enter 1 : 1

Enter the element in the list : 4

If you wish to add more data on the list enter 1 : 1

Enter the element in the list : 5

If you wish to add more data on the list enter 1 : 0
The list is as follows :
1->2->3->4->5->1


Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.