0% found this document useful (0 votes)
72 views3 pages

Double Linked List

This document describes how to delete a node from a doubly linked list in C++. It defines a Node class with data, next, and prev pointers. The deleteNode function removes a given node by adjusting its neighbors' pointers. It first checks for the head or tail node case, then sets the next/prev pointers around the deleted node. Finally, it frees the memory for the node. The code provides push and printList functions and tests deletion of the first, middle, and last nodes.

Uploaded by

Rahul Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
72 views3 pages

Double Linked List

This document describes how to delete a node from a doubly linked list in C++. It defines a Node class with data, next, and prev pointers. The deleteNode function removes a given node by adjusting its neighbors' pointers. It first checks for the head or tail node case, then sets the next/prev pointers around the deleted node. Finally, it frees the memory for the node. The code provides push and printList functions and tests deletion of the first, middle, and last nodes.

Uploaded by

Rahul Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

delete a node from Doubly Linked List

// C++ program to delete a node from


// Doubly Linked List
#include <bits/stdc++.h>
using namespace std;

/* a node of the doubly linked list */


class Node
{
public:
int data;
Node* next;
Node* prev;
};

/* Function to delete a node in a Doubly Linked List.


head_ref --> pointer to head node pointer.
del --> pointer to node to be deleted. */
void deleteNode(Node** head_ref, Node* del)
{
/* base case */
if (*head_ref == NULL || del == NULL)
return;

/* If node to be deleted is head node */


if (*head_ref == del)
*head_ref = del->next;

/* Change next only if node to be


deleted is NOT the last node */
if (del->next != NULL)
del->next->prev = del->prev;

/* Change prev only if node to be


deleted is NOT the first node */
if (del->prev != NULL)
del->prev->next = del->next;

/* Finally, free the memory occupied by del*/


free(del);
return;
}
1|Page
delete a node from Doubly Linked List

/* UTILITY FUNCTIONS */
/* Function to insert a node at the
beginning of the Doubly Linked List */
void push(Node** head_ref, int new_data)
{
/* allocate node */
Node* new_node = new Node();

/* put in the data */


new_node->data = new_data;

/* since we are adding at the beginning,


prev is always NULL */
new_node->prev = NULL;

/* link the old list off the new node */


new_node->next = (*head_ref);

/* change prev of head node to new node */


if ((*head_ref) != NULL)
(*head_ref)->prev = new_node;

/* move the head to point to the new node */


(*head_ref) = new_node;
}

/* Function to print nodes in a given doubly linked list


This function is same as printList() of singly linked list
*/
void printList(Node* node)
{
while (node != NULL)
{
cout << node->data << " ";
node = node->next;
}
}

2|Page
delete a node from Doubly Linked List

/* Driver code*/

int main()
{
/* Start with the empty list */
Node* head = NULL;

/* Let us create the doubly linked list 10<->8<->4<->2


*/
push(&head, 2);
push(&head, 4);
push(&head, 8);
push(&head, 10);

cout << "Original Linked list ";


printList(head);

/* delete nodes from the doubly linked list */


deleteNode(&head, head); /*delete first node*/
deleteNode(&head, head->next); /*delete middle node*/
deleteNode(&head, head->next); /*delete last node*/

/* Modified linked list will be NULL<-8->NULL */


cout << "\nModified Linked list ";
printList(head);

return 0;
}

// This code is contributed by rathbhupendra

3|Page

You might also like