Skip to content
Programmingoneonone
Programmingoneonone
  • Home
  • CS Subjects
    • IoT ? Internet of Things
    • Digital Communication
    • Human Values
  • Programming Tutorials
    • C Programming
    • Data structures and Algorithms
    • 100+ Java Programs
    • 100+ C Programs
  • HackerRank Solutions
    • HackerRank Algorithms Solutions
    • HackerRank C problems solutions
    • HackerRank C++ problems solutions
    • HackerRank Java problems solutions
    • HackerRank Python problems solutions
Programmingoneonone

HackerEarth Reversed Linked List problem solution

YASH PAL, 31 July 2024
In this HackerEarth Reversed Linked List problem solution, You are given a linked list that contains N integers. You have performed the following reverse operation on the list:
  1. Select all the subparts of the list that contain only even integers. For example, if the list is {1,2,8,9,12,16}, then the selected subparts will be {2,8}, {12,16}.
  2. Reverse the selected subpart such as {8,2} and {16,12}.
Now, you are required to retrieve the original list.
HackerEarth Reversed Linked List problem solution

HackerEarth Reversed Linked List problem solution.

#include<bits/stdc++.h>
#define LL long long int
#define M 1000000007
#define endl "n"
#define eps 0.00000001
LL pow(LL a,LL b,LL m){ a%=m;LL x=1,y=a;while(b > 0){if(b%2 == 1){x=(x*y);if(x>m) x%=m;}y = (y*y);if(y>m) y%=m;b /= 2;}return x%m;}
LL gcd(LL a,LL b){if(b==0) return a; else return gcd(b,a%b);}
LL gen(LL start,LL end){LL diff = end-start;LL temp = rand()%start;return temp+diff;}
using namespace std;
int a[1001];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
assert(n <= 1000);
for(int i = 1; i <= n; i++) {
cin >> a[i];
assert(a[i] >= 1 && a[i] <= 1000000000);
}
int i = 1;
while(i <= n) {
if(a[i] % 2 == 0) {
int st = i, et = i;
while(i <= n && a[i] % 2 == 0) {
et = i;
++i;
}
reverse(a + st , a + et + 1);
}
else{
++i;
}
}
for(int i = 1; i <= n; i++) {
cout << a[i] << " ";
}

}

Second solution

#include <bits/stdc++.h>

using namespace std;

stack<int> stk;

struct Node {
int data;
Node *next;
};

Node *ptr;
Node *head1 = NULL;
Node *head2 = NULL;

int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
for(int i = 0; i < n; i ++) {
int x;
cin >> x;
Node *tmp = new Node;
tmp->data = x;
tmp->next = NULL;
if(head1 == NULL) {
head1 = tmp;
ptr = tmp;
} else {
ptr->next = tmp;
ptr = ptr->next;
}
}
while(head1 != NULL) {
if(head1->data % 2 == 0) {
stk.push(head1->data);
} else {
bool flag = 1;
while(!stk.empty() || flag) {
if(stk.empty())
flag = 0;
Node *tmp = new Node;
tmp->data = flag ? stk.top() : head1->data;
tmp->next = NULL;
if(head2 == NULL) {
head2 = tmp;
ptr = tmp;
} else {
ptr->next = tmp;
ptr = ptr->next;
}
if(!stk.empty())
stk.pop();
}
}
head1 = head1->next;
}
while(!stk.empty()) {
Node *tmp = new Node;
tmp->data = stk.top();
tmp->next = NULL;
if(head2 == NULL) {
head2 = tmp;
ptr = tmp;
} else {
ptr->next = tmp;
ptr = ptr->next;
}
stk.pop();
}
while(head2 != NULL) {
cout << head2->data << ' ';
head2 = head2->next;
}
cout << 'n';
return 0;
}
coding problems solutions

Post navigation

Previous post
Next post

Pages

  • About US
  • Contact US
  • Privacy Policy

Programing Practice

  • C Programs
  • java Programs

HackerRank Solutions

  • C
  • C++
  • Java
  • Python
  • Algorithm

Other

  • Leetcode Solutions
  • Interview Preparation

Programming Tutorials

  • DSA
  • C

CS Subjects

  • Digital Communication
  • Human Values
  • Internet Of Things
  • YouTube
  • LinkedIn
  • Facebook
  • Pinterest
  • Instagram
©2025 Programmingoneonone | WordPress Theme by SuperbThemes