#include <iostream>
using namespace std;
struct SinglyLinkedListNode {
int data;
SinglyLinkedListNode* next;
SinglyLinkedListNode(int val) {
data = val;
next = nullptr;
}
};
SinglyLinkedListNode* mergeLists(SinglyLinkedListNode* head1, SinglyLinkedListNode* head2) {
if (!head1) return head2;
if (!head2) return head1;
SinglyLinkedListNode* mergedHead = nullptr;
if (head1->data < head2->data) {
mergedHead = head1;
head1 = head1->next;
} else {
mergedHead = head2;
head2 = head2->next;
}
SinglyLinkedListNode* current = mergedHead;
while (head1 && head2) {
if (head1->data < head2->data) {
current->next = head1;
head1 = head1->next;
} else {
current->next = head2;
head2 = head2->next;
}
current = current->next;
}
if (head1) current->next = head1;
if (head2) current->next = head2;
return mergedHead;
}
void printList(SinglyLinkedListNode* head) {
while (head) {
cout << head->data << " ";
head = head->next;
}
cout << endl;
}
int main() {
SinglyLinkedListNode* head1 = new SinglyLinkedListNode(1);
head1->next = new SinglyLinkedListNode(3);
head1->next->next = new SinglyLinkedListNode(5);
SinglyLinkedListNode* head2 = new SinglyLinkedListNode(2);
head2->next = new SinglyLinkedListNode(4);
head2->next->next = new SinglyLinkedListNode(6);
SinglyLinkedListNode* merged = mergeLists(head1, head2);
printList(merged);
return 0;
}