From 515e6936fecc0c94988a23b1974011f64f4bcefb Mon Sep 17 00:00:00 2001 From: Adars T S <117556787+a6ar55@users.noreply.github.com> Date: Sat, 21 Oct 2023 00:16:48 +0530 Subject: [PATCH] Create reverse_linkedlist.cpp --- Coding/reverse_linkedlist.cpp | 72 +++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 Coding/reverse_linkedlist.cpp diff --git a/Coding/reverse_linkedlist.cpp b/Coding/reverse_linkedlist.cpp new file mode 100644 index 0000000..0524c74 --- /dev/null +++ b/Coding/reverse_linkedlist.cpp @@ -0,0 +1,72 @@ +#include +using namespace std; + +class Node { +public: + int data; + Node* next; + Node* prev; +}; + +void reverse(Node** head_ref) +{ + Node* temp = NULL; + Node* current = *head_ref; + + while (current != NULL) { + temp = current->prev; + current->prev = current->next; + current->next = temp; + current = current->prev; + } + + + if (temp != NULL) + *head_ref = temp->prev; +} + + +void push(Node** head_ref, int new_data) +{ + Node* new_node = new Node(); + + new_node->data = new_data; + + new_node->prev = NULL; + + new_node->next = (*head_ref); + + if ((*head_ref) != NULL) + (*head_ref)->prev = new_node; + + (*head_ref) = new_node; +} + + +void printList(Node* node) +{ + while (node != NULL) { + cout << node->data << " "; + node = node->next; + } +} + +int main() +{ + Node* head = NULL; + + push(&head, 2); + push(&head, 4); + push(&head, 8); + push(&head, 10); + + cout << "Original Linked list" << endl; + printList(head); + + reverse(&head); + + cout << "\nReversed Linked list" << endl; + printList(head); + + return 0; +}