Doubly Linked List
Doubly Linked List
//Roll_No-67
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
};
newNode->data = value;
newNode->prev = NULL;
newNode->next = head;
if (head != NULL) {
head->prev = newNode;
head = newNode;
}
// Function to insert a node at the end
newNode->data = value;
newNode->next = NULL;
if (head == NULL) {
newNode->prev = NULL;
head = newNode;
return;
temp = temp->next;
temp->next = newNode;
newNode->prev = temp;
newNode->data = value;
if (position == 1) {
newNode->prev = NULL;
newNode->next = head;
head->prev = newNode;
head = newNode;
return;
temp = temp->next;
if (temp == NULL) {
printf("Invalid position\n");
return;
newNode->prev = temp;
newNode->next = temp->next;
if (temp->next != NULL) {
temp->next->prev = newNode;
temp->next = newNode;
}
// Function to delete a node from the beginning
void deleteFromBeginning() {
if (head == NULL) {
printf("List is empty\n");
return;
head = head->next;
if (head != NULL) {
head->prev = NULL;
free(temp);
void deleteFromLast() {
if (head == NULL) {
printf("List is empty\n");
return;
if (temp->prev != NULL) {
temp->prev->next = NULL;
} else {
head = NULL;
free(temp);
if (head == NULL) {
printf("List is empty\n");
return;
temp = temp->next;
printf("Invalid position\n");
return;
}
temp->next = nodeToDelete->next;
if (nodeToDelete->next != NULL) {
nodeToDelete->next->prev = temp;
free(nodeToDelete);
int position = 1;
if (temp->data == value) {
return;
temp = temp->next;
position++;
}
printf("Element not found\n");
void displayList() {
temp = temp->next;
printf("\n");
int main() {
do {
scanf("%d", &choice);
switch (choice) {
case 1:
scanf("%d", &value);
insertAtBeginning(value);
break;
case 2:
scanf("%d", &value);
insertAtLast(value);
break;
case 3:
scanf("%d", &value);
scanf("%d", &position);
insertAtLocation(value, position);
break;
case 4:
deleteFromBeginning();
break;
case 5:
deleteFromLast();
break;
case 6:
scanf("%d", &position);
deleteAfterLocation(position);
break;
case 7:
scanf("%d", &value);
searchElement(value);
break;
case 8:
displayList();
break;
case 9:
break;
default:
printf("Invalid choice\n");
return 0;
Output:-
1. Insert in beginning
2. Insert at last
8.Show
9. Exit
1. Insert in beginning
2. Insert at last
8.Show
9. Exit
1. Insert in beginning
2. Insert at last
8.Show
9. Exit
Enter your choice: 3
1. Insert in beginning
2. Insert at last
8.Show
9. Exit
1. in beginning
2. Insert at last
8.Show
9. Exit