#include <iostream>
using namespace std;
class IntNode {
public:
IntNode(int value) {
numVal = value;
}
~IntNode() {
cout << numVal << endl;
}
int numVal;
IntNode* next;
};
class IntLinkedList {
public:
IntLinkedList();
~IntLinkedList();
void Prepend(int);
IntNode* head;
};
IntLinkedList::IntLinkedList() {
head = nullptr;
}
IntLinkedList::~IntLinkedList() {
while (head) {
IntNode* next = head->next;
delete head;
head = next;
}
cout << "end of list" << endl;
}
void IntLinkedList::Prepend(int dataValue) {
IntNode* newNode = new IntNode(dataValue);
newNode->next = head;
head = newNode;
}
int main() {
IntLinkedList* list = new IntLinkedList();
list->Prepend(1);
list->Prepend(3);
list->Prepend(5);
list->Prepend(7);
delete list;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgSW50Tm9kZSB7CiAgIHB1YmxpYzoKICAgICAgSW50Tm9kZShpbnQgdmFsdWUpIHsKICAgICAgICAgbnVtVmFsID0gdmFsdWU7CiAgICAgIH0KCiAgICAgIH5JbnROb2RlKCkgewogICAgICAgICBjb3V0IDw8IG51bVZhbCA8PCBlbmRsOwogICAgICB9CgogICAgICBpbnQgbnVtVmFsOwogICAgICBJbnROb2RlKiBuZXh0Owp9OwoKY2xhc3MgSW50TGlua2VkTGlzdCB7CiAgIHB1YmxpYzoKICAgICAgSW50TGlua2VkTGlzdCgpOwogICAgICB+SW50TGlua2VkTGlzdCgpOwogICAgICB2b2lkIFByZXBlbmQoaW50KTsKCiAgICAgIEludE5vZGUqIGhlYWQ7Cn07CgpJbnRMaW5rZWRMaXN0OjpJbnRMaW5rZWRMaXN0KCkgewogICBoZWFkID0gbnVsbHB0cjsKfQoKSW50TGlua2VkTGlzdDo6fkludExpbmtlZExpc3QoKSB7CiAgIHdoaWxlIChoZWFkKSB7CiAgICAgIEludE5vZGUqIG5leHQgPSBoZWFkLT5uZXh0OwogICAgICBkZWxldGUgaGVhZDsKICAgICAgaGVhZCA9IG5leHQ7CiAgIH0KICAgY291dCA8PCAiZW5kIG9mIGxpc3QiIDw8IGVuZGw7Cn0KCnZvaWQgSW50TGlua2VkTGlzdDo6UHJlcGVuZChpbnQgZGF0YVZhbHVlKSB7CiAgIEludE5vZGUqIG5ld05vZGUgPSBuZXcgSW50Tm9kZShkYXRhVmFsdWUpOwogICBuZXdOb2RlLT5uZXh0ID0gaGVhZDsKICAgaGVhZCA9IG5ld05vZGU7Cn0KCmludCBtYWluKCkgewogICBJbnRMaW5rZWRMaXN0KiBsaXN0ID0gbmV3IEludExpbmtlZExpc3QoKTsKCiAgIGxpc3QtPlByZXBlbmQoMSk7CiAgIGxpc3QtPlByZXBlbmQoMyk7CiAgIGxpc3QtPlByZXBlbmQoNSk7CiAgIGxpc3QtPlByZXBlbmQoNyk7CgogICBkZWxldGUgbGlzdDsKCiAgIHJldHVybiAwOwp9