Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Convert an Array to a Circular Doubly Linked List in C++
In this tutorial, we will be discussing a program to convert an array to a circular doubly linked list.
For this we will be provided with an array. Our task is to take the elements of the array and get it converted into a circular doubly linked list.
Example
#include<iostream>
using namespace std;
//node structure for doubly linked list
struct node{
int data;
struct node *next;
struct node *prev;
};
//node creation
struct node* getNode(){
return ((struct node *)malloc(sizeof(struct node)));
}
//printing the list
int print_list(struct node *temp){
struct node *t = temp;
if(temp == NULL)
return 0;
else {
cout<<"List: ";
while(temp->next != t) {
cout<<temp->data<<" ";
temp = temp->next;
}
cout<<temp->data;
return 1;
}
}
//converting array to linked list
void convert_array(int arr[], int n, struct node **start) {
//declaring new pointer
struct node *newNode,*temp;
int i;
//moving through all the elements
for(i=0;i<n;i++){
newNode = getNode();
newNode->data = arr[i];
if(i==0) {
*start = newNode;
newNode->prev = *start;
newNode->next = *start;
} else {
//calculating the last node
temp = (*start)->prev;
temp->next = newNode;
newNode->next = *start;
newNode->prev = temp;
temp = *start;
temp->prev = newNode;
}
}
}
int main(){
int arr[] = {1,2,3,4,5};
int n = sizeof(arr) / sizeof(arr[0]);
struct node *start = NULL;
convert_array(arr, n, &start);
print_list(start);
return 0;
}
output
List: 1 2 3 4 5
Advertisements