Algorithm for Deletion in a Doubly Linked List
Algorithm for Deletion in a Doubly Linked List
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
};
newNode->data = data;
newNode->prev = NULL;
newNode->next = NULL;
return newNode;
if (*head == NULL) {
*head = newNode;
return;
temp = temp->next;
temp->next = newNode;
newNode->prev = temp;
if (*head == NULL) {
printf("List is empty.\n");
return;
if (*head != NULL)
(*head)->prev = NULL;
free(temp);
if (*head == NULL) {
printf("List is empty.\n");
return;
if (temp->next == NULL) {
*head = NULL;
free(temp);
return;
temp = temp->next;
temp->prev->next = NULL;
free(temp);
return;
}
if (position == 1) {
deleteFirstNode(head);
return;
temp = temp->next;
if (temp == NULL) {
return;
if (temp->next != NULL)
temp->next->prev = temp->prev;
if (temp->prev != NULL)
temp->prev->next = temp->next;
free(temp);
temp = temp->next;
printf("NULL\n");
// Driver code
int main() {
insertAtEnd(&head, 10);
insertAtEnd(&head, 20);
insertAtEnd(&head, 30);
insertAtEnd(&head, 40);
printList(head);
deleteFirstNode(&head);
printList(head);
deleteLastNode(&head);
printList(head);
deleteAtPosition(&head, 2);
printList(head);
return 0;
1. Node Structure:
2. Deletion Functions:
4. Printing Function:
5. Main Function: