In this article we will learn that what is doubly link list and how to implement a doubly link list.

Doubly link list is a list in which there is three field first for storing the address of the previous node second for data field and third for the address of the next node.

**Pre_pointer:- ** It store the address of the previous node

**Data field:-** It store the data.

**Next_Pointer:-** It store the address of the next node.

__Implementation of doubly link list:-__#include<stdio.h>

// function for define the structure of node

struct node

{

int data;

struct node *pre,*next;

};

struct node *head=NULL;

// function for creating the node

struct node *creatnode()

{

struct node* t;

t=(struct node*)malloc(sizeof(struct node));

return(t);

}

// function for insert the node

// at starting for the list

void InsertAsFirst()

{

struct node *t;

t=creatnode();

printf("Enter a number");

scanf("%d",&t->data);

t->pre=NULL;

t->next=NULL;

if(head==NULL)

{

head=t;

}

else

{

t->next=head;

head->pre=t;

head=t;

}

}

// function for delete the node

// from the starting

void deletefirst()

{

struct node *t;

if(head==NULL)

printf("List is Empty");

else

{

t=head;

head=head->next;

head->pre=NULL;

free(t);

}

}

// function for view the list

void viewlist()

{

struct node *t;

if(head==NULL)

printf("List is Empty");

else

{

t=head;

while(t->next!=NULL)

{

printf("%d ",t->data);

t=t->next;

}

}

}

// driver function

int main()

{

int ch;

head=creatnode();

while(1)

{

printf("Press\n");

printf("1. Insertion\n");

printf("2. delete\n");

printf("3. View List\n");

printf("4. Exit\n");

printf("Enter Your Choice\n");

scanf("%d",&ch);

switch(ch)

{

case 1:

InsertAsFirst();

break;

case 2:

deletefirst();

break;

case 3:

viewlist();

break;

case 4:

exit(0);

default :

printf("Invailid key");

}

}

return 0;

}

Output:-

Press

1. Insertion

2. delete

3. View List

4. Exit

Enter Your Choice 1

Enter a number 12

Press

1. Insertion

2. delete

3. View List

4. Exit

Enter Your Choice 1

Enter a number 34

Press

1. Insertion

2. delete

3. View List

4. Exit

Enter Your Choice

3

34 12

Press

1. Insertion

2. delete

3. View List

4. Exit

Enter Your Choice

2

Press

1. Insertion

2. delete

3. View List

4. Exit

Enter Your Choice 4

__Recommended Post:__

__Key points:-__

- How to set limit in the floating value in python
- What is boolean data type
- How to print any character without using format specifier
- How to check that given number is power of 2 or not
- How to fix limit in double and floating numbers after dot (.) in c++
- How to print a double or floating point number in scientific notation and fixed notation
- How to take input a string in c
- How to reduce the execution time of program in c++.

__Cracking the coding interview:-__

__Array and string:-__

__Tree and graph:-__

__Hackerearth Problems:-__

- Very Cool numbers | Hacker earth solution
- Vowel Recognition | Hackerearth practice problem solution
- Birthday party | Hacker earth solution
- Most frequent | hacker earth problem solution
- program to find symetric difference of two sets
- cost of balloons | Hacker earth problem solution
- Chacha o chacha | hacker earth problem solution
- jadu and dna | hacker earth solution
- Bricks game | hacker earth problem
- Anti-Palindrome strings | hacker earth solution
- connected components in the graph | hacker earth data structure
- odd one out || hacker earth problem solution
- Minimum addition | Hackerearth Practice problem
- The magical mountain | Hackerearth Practice problem
- The first overtake | Hackerearth Practice problem

__Hackerrank Problems:-__- Playing With Characters | Hackerrank practice problem solution
- Sum and Difference of Two Numbers | hackerrank practice problem solution
- Functions in C | hackerrank practice problem solution
- Pointers in C | hackerrank practice problem solution
- Conditional Statements in C | Hackerrank practice problem solution
- For Loop in C | hackerrank practice problem solution
- Sum of Digits of a Five Digit Number | hackerrank practice problem solution
- 1D Arrays in C | hackerrank practice problem solution
- Array Reversal | hackerrank practice problem solution
- Printing Tokens | hackerrank practice problem solution
- Digit Frequency | hackerrank practice problem solution
- Calculate the Nth term | hackerrank practice problem solution

__Data structure:-__

- Program to find cycle in the graph
- Implementation of singly link list
- Implementation of queue by using link list
- Algorithm of quick sort
- stack by using link list
- program to find preorder post order and inorder of the binary search tree
- Minimum weight of spanning tree
- Preorder, inorder and post order traversal of the tree

__ MCQs:-__