From 01c22d73f723205d9782feb49f34738a8ad28499 Mon Sep 17 00:00:00 2001 From: DipanjanaPal123 <146447816+DipanjanaPal123@users.noreply.github.com> Date: Mon, 9 Oct 2023 22:45:00 +0530 Subject: [PATCH] Create ReverseALinkedList.cpp --- Linked List/ReverseALinkedList.cpp | 75 ++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Linked List/ReverseALinkedList.cpp diff --git a/Linked List/ReverseALinkedList.cpp b/Linked List/ReverseALinkedList.cpp new file mode 100644 index 0000000..5a2d2f2 --- /dev/null +++ b/Linked List/ReverseALinkedList.cpp @@ -0,0 +1,75 @@ +// Iterative C++ program to reverse a linked list +#include +using namespace std; + +/* Link list node */ +struct Node { + int data; + struct Node* next; + Node(int data) + { + this->data = data; + next = NULL; + } +}; + +struct LinkedList { + Node* head; + LinkedList() { head = NULL; } + + /* Function to reverse the linked list */ + void reverse() + { + // Initialize current, previous and next pointers + Node* current = head; + Node *prev = NULL, *next = NULL; + + while (current != NULL) { + // Store next + next = current->next; + // Reverse current node's pointer + current->next = prev; + // Move pointers one position ahead. + prev = current; + current = next; + } + head = prev; + } + + /* Function to print linked list */ + void print() + { + struct Node* temp = head; + while (temp != NULL) { + cout << temp->data << " "; + temp = temp->next; + } + } + + void push(int data) + { + Node* temp = new Node(data); + temp->next = head; + head = temp; + } +}; + +/* Driver code*/ +int main() +{ + /* Start with the empty list */ + LinkedList ll; + ll.push(20); + ll.push(4); + ll.push(15); + ll.push(85); + + cout << "Given linked list\n"; + ll.print(); + + ll.reverse(); + + cout << "\nReversed linked list \n"; + ll.print(); + return 0; +}