Assignment 12: Aim: Implement Double Linked List Operations
This document contains C++ code to implement a doubly linked list. It includes functions to insert nodes at the beginning, end, and after a given node. The main function creates a doubly linked list with 5 nodes and prints it out using the displayList function. The functions insert_front, insert_end, and insert_After are used to build the list in the given order.
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 ratings0% found this document useful (0 votes)
45 views7 pages
Assignment 12: Aim: Implement Double Linked List Operations
This document contains C++ code to implement a doubly linked list. It includes functions to insert nodes at the beginning, end, and after a given node. The main function creates a doubly linked list with 5 nodes and prints it out using the displayList function. The functions insert_front, insert_end, and insert_After are used to build the list in the given order.
void insert_front(struct Node** head, int new_data) { //allocate memory for New node struct Node* newNode = new Node;
//assign data to new node
newNode->data = new_data;
//new node is head and previous is null, since we are
adding at the front newNode->next = (*head); newNode->prev = NULL;
//previous of head is new node
if ((*head) != NULL) (*head)->prev = newNode;
//head points to new node
(*head) = newNode; } // /* Given a node as prev_node, insert a new node after the given node /void insert_After(struct Node prev_node, int new_data) { //check if prev node is null if (prev_node == NULL) { cout<<"Previous node is required , it cannot be NULL"; return; } //allocate memory for new node struct Node* newNode = new Node;
//assign data to new node
newNode->data = new_data;
//set next of newnode to next of prev node
newNode->next = prev_node->next;
//set next of prev node to newnode
prev_node->next = newNode;
//now set prev of newnode to prev node
newNode->prev = prev_node;
//set prev of new node's next to newnode
if (newNode->next != NULL) newNode->next->prev = newNode; } //insert a new node at the end of the list void insert_end(struct Node** head, int new_data) { //allocate memory for node struct Node* newNode = new Node;
struct Node* last = *head; //set last node value to head
//set data for new node
newNode->data = new_data;
//new node is the last node , so set next of new node to
null newNode->next = NULL;
//check if list is empty, if yes make new node the head of
list if (*head == NULL) { newNode->prev = NULL; *head = newNode; return; }
//otherwise traverse the list to go to last node
while (last->next != NULL) last = last->next;
//set next of last to new node
last->next = newNode;
//set last to prev of new node
newNode->prev = last; return; }
// This function prints contents of linked list starting from the
given node void displayList(struct Node* node) { struct Node* last;