day 11: 328-odd-even-linked-list

This commit is contained in:
Kaushik Narayan R 2023-10-08 13:49:29 -07:00
parent 692280761f
commit 107a4c624f
3 changed files with 93 additions and 0 deletions

View File

@ -0,0 +1,22 @@
#include "soln.hpp"
int main()
{
ListNode n5 = ListNode(5);
ListNode n4 = ListNode(4, &n5);
ListNode n3 = ListNode(3, &n4);
ListNode n2 = ListNode(2, &n3);
ListNode n1 = ListNode(1, &n2);
ListNode n_4 = ListNode(4);
ListNode n_2 = ListNode(2, &n_4);
ListNode n_5 = ListNode(5, &n_2);
ListNode n_3 = ListNode(3, &n_5);
ListNode n_1 = ListNode(1, &n_3);
Solution soln;
soln.printList(&n1);
soln.printList(&n_1);
cout << "Grouped odd-even correctly? " << soln.test(&n1, &n_1) << endl;
return 0;
}

View File

@ -0,0 +1,51 @@
#include "soln.hpp"
ListNode *Solution::oddEvenList(ListNode *head)
{
bool odd_node = true;
if (head == nullptr || head->next == nullptr || head->next->next == nullptr)
return head;
ListNode *even_start = head->next;
ListNode *cur_node;
ListNode *next_node = head;
while (next_node)
{
cur_node = next_node;
next_node = cur_node->next;
if (next_node == nullptr)
break;
cur_node->next = cur_node->next->next;
}
cur_node = head;
while (cur_node->next)
cur_node = cur_node->next;
cur_node->next = even_start;
return head;
}
void Solution::printList(ListNode *head)
{
ListNode *cur = head;
while (cur)
{
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
}
bool Solution::test(ListNode *head, ListNode *answer)
{
ListNode *cur1 = oddEvenList(head), *ans1 = answer;
while (cur1 && ans1)
{
if (cur1->val != ans1->val)
return false;
cur1 = cur1->next;
ans1 = ans1->next;
}
if (!cur1 && !ans1)
return true;
else
return false;
}

View File

@ -0,0 +1,20 @@
#include <bits/stdc++.h>
using namespace std;
/* Singly linked list*/
struct ListNode
{
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
class Solution {
public:
ListNode* oddEvenList(ListNode* head);
void printList(ListNode* head);
bool test(ListNode* head, ListNode* answer);
};