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.

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
//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)
Else
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>

typedef struct list {
int data;
struct list* next;
struct list* prev;
} node;

void display(node* temp)
{
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);
}
else {
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);

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
```