#include <iostream>
using namespace std;
class Node {
public:
int data;
Node *next;
Node(int data) {
this->data = data;
this->next = NULL;
}
};
class LL {
private:
Node *head;
public:
LL() : head(NULL) {
createLL();
}
void printLL(Node *head) {
if(head == NULL)
head = this->head;
Node *temp = head;
while (temp != NULL) {
cout << temp->data << "-->";
temp = temp->next;
}
cout << "NULL" << endl;
}
void createLL() {
head = new Node(2);
head->next = new Node(7);
head->next->next = new Node(8);
head->next->next->next = new Node(1);
head->next->next->next->next = new Node(4);
head->next->next->next->next->next = new Node(9);
}
friend void mergeAlternate(LL LL1, LL LL2);
~LL() {
Node *temp = NULL;
while (head != NULL) {
temp = head;
head = head->next;
delete temp;
}
}
};
void mergeAlternate(LL LL1, LL LL2) {
Node *head1 = LL1.head, *head2 = LL2.head;
Node *temp1, *temp2;
while ((head1 != NULL) && (head2 != NULL)) {
temp1 = head1->next;
temp2 = head2->next;
head1->next = head2;
head2->next = temp1;
if (temp1 == NULL)
break;
head1 = temp1;
head2 = temp2;
}
if (head2 != NULL) {
head1->next = head2;
}
LL2.head = NULL;
LL1.printLL(LL1.head);
}
int main() {
LL newLL, newLL2;
newLL2.printLL(NULL);
mergeAlternate(newLL, newLL2);
newLL2.printLL(NULL);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgTm9kZSB7CnB1YmxpYzoKICAgIGludCBkYXRhOwogICAgTm9kZSAqbmV4dDsKICAgIE5vZGUoaW50IGRhdGEpIHsKICAgICAgICB0aGlzLT5kYXRhID0gZGF0YTsKICAgICAgICB0aGlzLT5uZXh0ID0gTlVMTDsKICAgIH0KfTsKY2xhc3MgTEwgewpwcml2YXRlOgogICAgTm9kZSAqaGVhZDsKcHVibGljOgoKICAgIExMKCkgOiBoZWFkKE5VTEwpIHsKICAgICAgICBjcmVhdGVMTCgpOwogICAgfQoKICAgIHZvaWQgcHJpbnRMTChOb2RlICpoZWFkKSB7CiAgICAgICAgaWYoaGVhZCA9PSBOVUxMKQogICAgICAgICAgICBoZWFkID0gdGhpcy0+aGVhZDsKICAgICAgICBOb2RlICp0ZW1wID0gaGVhZDsKICAgICAgICB3aGlsZSAodGVtcCAhPSBOVUxMKSB7CiAgICAgICAgICAgIGNvdXQgPDwgdGVtcC0+ZGF0YSA8PCAiLS0+IjsKICAgICAgICAgICAgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgIk5VTEwiIDw8IGVuZGw7CiAgICB9CgogICAgdm9pZCBjcmVhdGVMTCgpIHsKICAgICAgICBoZWFkID0gbmV3IE5vZGUoMik7CiAgICAgICAgaGVhZC0+bmV4dCA9IG5ldyBOb2RlKDcpOwogICAgICAgIGhlYWQtPm5leHQtPm5leHQgPSBuZXcgTm9kZSg4KTsKICAgICAgICBoZWFkLT5uZXh0LT5uZXh0LT5uZXh0ID0gbmV3IE5vZGUoMSk7CiAgICAgICAgaGVhZC0+bmV4dC0+bmV4dC0+bmV4dC0+bmV4dCA9IG5ldyBOb2RlKDQpOwogICAgICAgIGhlYWQtPm5leHQtPm5leHQtPm5leHQtPm5leHQtPm5leHQgPSBuZXcgTm9kZSg5KTsKICAgIH0KICAgIAogICAgZnJpZW5kIHZvaWQgbWVyZ2VBbHRlcm5hdGUoTEwgTEwxLCBMTCBMTDIpOwoKICAgIH5MTCgpIHsKICAgICAgICBOb2RlICp0ZW1wID0gTlVMTDsKICAgICAgICB3aGlsZSAoaGVhZCAhPSBOVUxMKSB7CiAgICAgICAgICAgIHRlbXAgPSBoZWFkOwogICAgICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKICAgICAgICAgICAgZGVsZXRlIHRlbXA7CiAgICAgICAgfQogICAgfQp9OwoKdm9pZCBtZXJnZUFsdGVybmF0ZShMTCBMTDEsIExMIExMMikgewogICAgICAgIE5vZGUgKmhlYWQxID0gTEwxLmhlYWQsICpoZWFkMiA9IExMMi5oZWFkOwogICAgICAgIE5vZGUgKnRlbXAxLCAqdGVtcDI7CiAgICAgICAgd2hpbGUgKChoZWFkMSAhPSBOVUxMKSAmJiAoaGVhZDIgIT0gTlVMTCkpIHsKICAgICAgICAgICAgdGVtcDEgPSBoZWFkMS0+bmV4dDsKICAgICAgICAgICAgdGVtcDIgPSBoZWFkMi0+bmV4dDsKICAgICAgICAgICAgaGVhZDEtPm5leHQgPSBoZWFkMjsKICAgICAgICAgICAgaGVhZDItPm5leHQgPSB0ZW1wMTsKICAgICAgICAgICAgaWYgKHRlbXAxID09IE5VTEwpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgaGVhZDEgPSB0ZW1wMTsKICAgICAgICAgICAgaGVhZDIgPSB0ZW1wMjsKICAgICAgICB9CiAgICAgICAgaWYgKGhlYWQyICE9IE5VTEwpIHsKICAgICAgICAgICAgaGVhZDEtPm5leHQgPSBoZWFkMjsKICAgICAgICB9CiAgICAgICAgTEwyLmhlYWQgPSBOVUxMOwogICAgICAgIExMMS5wcmludExMKExMMS5oZWFkKTsKICAgIH0KCmludCBtYWluKCkgewpMTCBuZXdMTCwgbmV3TEwyOwogICAgbmV3TEwyLnByaW50TEwoTlVMTCk7CiAgICBtZXJnZUFsdGVybmF0ZShuZXdMTCwgbmV3TEwyKTsKICAgIG5ld0xMMi5wcmludExMKE5VTEwpOwp9Cg==