Skip to content

Commit 8d24361

Browse files
committed
odd-even linked list
1 parent f1c9944 commit 8d24361

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
//Reorder all odd-positioned nodes together followed by all even-positioned nodes
2+
3+
#include <iostream>
4+
using namespace std;
5+
6+
struct Node {
7+
int data;
8+
Node* next;
9+
Node(int val) : data(val), next(nullptr) {}
10+
};
11+
12+
class LinkedList {
13+
public:
14+
Node* head;
15+
16+
LinkedList() : head(nullptr) {}
17+
18+
void insert(int val) {
19+
Node* newNode = new Node(val);
20+
if (!head) {
21+
head = newNode;
22+
return;
23+
}
24+
Node* temp = head;
25+
while (temp->next)
26+
temp = temp->next;
27+
temp->next = newNode;
28+
}
29+
30+
void oddEven() {
31+
if (!head || !head->next) return;
32+
33+
Node* odd = head;
34+
Node* even = head->next;
35+
Node* evenHead = even;
36+
37+
while (even && even->next) {
38+
odd->next = even->next;
39+
odd = odd->next;
40+
even->next = odd->next;
41+
even = even->next;
42+
}
43+
44+
odd->next = evenHead;
45+
}
46+
47+
void print() {
48+
Node* temp = head;
49+
while (temp) {
50+
cout << temp->data << " ";
51+
temp = temp->next;
52+
}
53+
cout << endl;
54+
}
55+
};
56+
57+
int main() {
58+
LinkedList ll;
59+
ll.insert(1);
60+
ll.insert(2);
61+
ll.insert(3);
62+
ll.insert(4);
63+
ll.insert(5);
64+
65+
cout << "Original List: ";
66+
ll.print();
67+
68+
ll.oddEven();
69+
70+
cout << "Odd-Even List after reordering: ";
71+
ll.print();
72+
73+
return 0;
74+
}

0 commit comments

Comments
 (0)