#include <iostream>
using namespace std;
struct SinglyLinkedListNode {
int data;
SinglyLinkedListNode* next;
SinglyLinkedListNode(int node_data) {
data = node_data;
next = nullptr;
}
};
SinglyLinkedListNode* insertNodeAtTail(SinglyLinkedListNode* head, int data) {
SinglyLinkedListNode* newNode = new SinglyLinkedListNode(data);
if (!head) {
return newNode;
}
SinglyLinkedListNode* temp = head;
while (temp->next) {
temp = temp->next;
}
temp->next = newNode;
return head;
}
void printList(SinglyLinkedListNode* head) {
while (head) {
cout << head->data << " ";
head = head->next;
}
cout << endl;
}
int main() {
SinglyLinkedListNode* head = nullptr;
head = insertNodeAtTail(head, 10);
head = insertNodeAtTail(head, 20);
head = insertNodeAtTail(head, 30);
printList(head);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFNpbmdseUxpbmtlZExpc3ROb2RlIHsKICAgIGludCBkYXRhOwogICAgU2luZ2x5TGlua2VkTGlzdE5vZGUqIG5leHQ7CiAgICAKICAgIFNpbmdseUxpbmtlZExpc3ROb2RlKGludCBub2RlX2RhdGEpIHsKICAgICAgICBkYXRhID0gbm9kZV9kYXRhOwogICAgICAgIG5leHQgPSBudWxscHRyOwogICAgfQp9OwoKU2luZ2x5TGlua2VkTGlzdE5vZGUqIGluc2VydE5vZGVBdFRhaWwoU2luZ2x5TGlua2VkTGlzdE5vZGUqIGhlYWQsIGludCBkYXRhKSB7CiAgICBTaW5nbHlMaW5rZWRMaXN0Tm9kZSogbmV3Tm9kZSA9IG5ldyBTaW5nbHlMaW5rZWRMaXN0Tm9kZShkYXRhKTsKCiAgICBpZiAoIWhlYWQpIHsKICAgICAgICByZXR1cm4gbmV3Tm9kZTsKICAgIH0KCiAgICBTaW5nbHlMaW5rZWRMaXN0Tm9kZSogdGVtcCA9IGhlYWQ7CiAgICB3aGlsZSAodGVtcC0+bmV4dCkgewogICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OyAKICAgIH0KICAgIHRlbXAtPm5leHQgPSBuZXdOb2RlOwoKICAgIHJldHVybiBoZWFkOwp9CgoKdm9pZCBwcmludExpc3QoU2luZ2x5TGlua2VkTGlzdE5vZGUqIGhlYWQpIHsKICAgIHdoaWxlIChoZWFkKSB7CiAgICAgICAgY291dCA8PCBoZWFkLT5kYXRhIDw8ICIgIjsKICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CiAgICBTaW5nbHlMaW5rZWRMaXN0Tm9kZSogaGVhZCA9IG51bGxwdHI7CgogIAogICAgaGVhZCA9IGluc2VydE5vZGVBdFRhaWwoaGVhZCwgMTApOwogICAgaGVhZCA9IGluc2VydE5vZGVBdFRhaWwoaGVhZCwgMjApOwogICAgaGVhZCA9IGluc2VydE5vZGVBdFRhaWwoaGVhZCwgMzApOwoKICAgIHByaW50TGlzdChoZWFkKTsKCiAgICByZXR1cm4gMDsKfQo=