#### Tue Jun 26 2018

# Doubly Linked list

C Programming2015 views

## File Name: doubly-linkedlist.c

#include<stdio.h>
#include<stdlib.h>
/* Linked list structure */
struct linkedlist {
struct linkedlist *prev;
int data;
struct linkedlist *next;
} *node = NULL, *first = NULL, *last = NULL, *node1 = NULL, *node2 = NULL;
/* Function for create/insert node at the beginning of Linked list */
void insert_beginning() {
/* Dynamic memory allocation */
node = (struct linkedlist*)malloc(sizeof(struct linkedlist));
printf("Enter value for the node:\n");
scanf("%d",&node->data);
if(first == NULL) {
node->prev = NULL;
node->next = NULL;
first = node;
last = node;
printf("Linked list Created!\n");
}
else {
node->prev = NULL;
first->prev = node;
node->next = first;
first = node;
printf("Data Inserted at the beginning of the Linked list!\n");
}
}
/* Function for create/insert node at the end of Linked list */
void insert_end() {
/* Dynamic memory allocation */
node = (struct linkedlist*)malloc(sizeof(struct linkedlist));
printf("Enter value for the node:\n");
scanf("%d",&node->data);
if(first == NULL) {
node->prev = NULL;
node->next = NULL;
first = node;
last = node;
printf("Linked list Created!\n");
}
else {
node->next = NULL;
last->next = node;
node->prev = last;
last = node;
printf("Data Inserted at the end of the Linked list!\n");
}
}
/* Function for Display Linked list */
void display() {
node = first;
printf("List of data in Linked list in Ascending order!\n");
while(node != NULL) {
printf("%d\n",node->data);
node = node->next;
}
node = last;
printf("List of data in Linked list in Descending order!\n");
while(node != NULL) {
printf("%d\n",node->data);
node = node->prev;
}
}
/* Function for create/insert node in Linked list */
void delete() {
int count = 0, number, i;
node = node1 = node2 = first;
for(node = first; node != NULL; node = node->next)
printf("Enter value for the node:\n");
count++;
display();
printf("\n%d nodes available here!\n", count);
printf("Enter the node number which you want to delete:\n");
scanf("%d", &number);
if(number != 1) {
if(number < count && number > 0) {
for(i = 2; i <= number; i++)
node = node->next;
for(i = 2; i <= number-1; i++)
node1 = node1->next;
for(i = 2; i <= number+1; i++)
node2 = node2->next;
node2->prev = node1;
node1->next = node2;
node->prev = NULL;
node->next = NULL;
free(node);
}
else if(number == count) {
node = last;
last = node->prev;
last->next = NULL;
free(node);
}
else
printf("Invalid node number!\n");
}
else {
node = first;
first = node->next;
first->prev = NULL;
free(node);
}
printf("Node has been deleted successfully!\n");
}
int main() {
int op = 0;
while(op != 5) {
printf("1. Insert at the beginning\n2. Insert at the end\n3. Delete\n4. Display\n5. Exit\n");
printf("Enter your choice:\n");
scanf("%d", &op);
switch(op) {
case 1:
insert_beginning();
break;
case 2:
insert_end();
break;
case 3:
delete();
break;
case 4:
display();
break;
case 5:
printf("Bye Bye!\n");
exit(0);
break;
default:
printf("Invalid choice!\n");
}
}
return 0;
}
/* Output */
1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit
Enter your choice:
1
Enter value for the node:
5
Linked list Created!
1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit
Enter your choice:
1
Enter value for the node:
6
Data Inserted at the beginning of the Linked list!
1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit
Enter your choice:
2
Enter value for the node:
7
Data Inserted at the end of the Linked list!
1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit
Enter your choice:
4
List of data in Linked list inAscending order!
6
5
7
List of data in Linked list in Descending order!
7
5
6
List of data in Linked list
5
6
1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit
Enter your choice:
3
List of data in Linked list inAscending order!
6
5
7
List of data in Linked list in Descending order!
7
5
6
3 nodes available here!
Enter the node number which you want to delete:
2
Node has been deleted successfully!
1. Insert at the beginning
2. Insert at the end
3. Delete
4. Display
5. Exit
Enter your choice:
5
Bye Bye!

**Reference:**

**Author:**Geekboots