From 5493977ff71107cd17b37d5badd8d1ea075f1c5b Mon Sep 17 00:00:00 2001 From: Chayan Das <110921638+Chayandas07@users.noreply.github.com> Date: Wed, 30 Nov 2022 02:34:33 +0530 Subject: [PATCH] Create 30 November Reorder List 30 November Reorder List --- 30 November Reorder List | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 30 November Reorder List diff --git a/30 November Reorder List b/30 November Reorder List new file mode 100644 index 00000000..1aeaa63f --- /dev/null +++ b/30 November Reorder List @@ -0,0 +1,44 @@ +class Solution{ +public: + Node* reverse(Node* head) +{ + Node* curr = head; + Node *next = NULL, *prev = NULL; + while(curr) + { + next = curr->next; + curr->next = prev; + prev = curr; + curr = next; + } + return prev; +} +Node* merge(Node* a,Node* b) +{ + while(b) + { + Node* temp1=a->next; + Node* temp2=b->next; + + a->next=b; + b->next=temp1; + a=temp1; + b=temp2; + } + return a; +} +void reorderList(Node* head) +{ + if(!head || !head->next) return; + Node *slow = head; + Node *fast = head->next; + while(fast&&fast->next) + { + slow=slow->next; + fast=fast->next->next; + } + Node* shead = reverse(slow->next); + slow->next=NULL; + merge(head,shead); +} +};