From a9dce431add2754d4aafe3bed52e0a18e465ed14 Mon Sep 17 00:00:00 2001 From: Bharti Kumari <84681369+Bharti814@users.noreply.github.com> Date: Sat, 7 Oct 2023 09:12:27 +0530 Subject: [PATCH] Create doubly linkedlist implementation --- doubly linkedlist implementation | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 doubly linkedlist implementation diff --git a/doubly linkedlist implementation b/doubly linkedlist implementation new file mode 100644 index 0000000000..15c7182dd5 --- /dev/null +++ b/doubly linkedlist implementation @@ -0,0 +1,38 @@ +// Given a reference (pointer to pointer) to the head +// of a DLL and an int, appends a new node at the end +void append(Node** head_ref, int new_data) +{ + // 1. allocate node + Node* new_node = new Node(); + + Node* last = *head_ref; /* used in step 5*/ + + // 2. put in the data + new_node->data = new_data; + + // 3. This new node is going to be the last node, so + // make next of it as NULL + new_node->next = NULL; + + // 4. If the Linked List is empty, then make the new + // node as head + if (*head_ref == NULL) { + new_node->prev = NULL; + *head_ref = new_node; + return; + } + + // 5. Else traverse till the last node + while (last->next != NULL) + last = last->next; + + // 6. Change the next of last node + last->next = new_node; + + // 7. Make last node as previous of new node + new_node->prev = last; + + return; +} + +// This code is contributed by shivanisinghss2110