#include <iostream>
using namespace std;
class List {
private:
struct Node {
int data; // simplification
Node *next;
Node(int d) {
data = d;
next = NULL;
}
};
protected:
Node *head;
Node *tail;
public:
List(int d) : head(new Node(d)), tail(head) {}
void append(int d) {
Node* n = new Node(d);
tail->next = n;
tail = n;
}
List(const List& rhs) {
if (head) delete head;
head=new Node(rhs.head->data);
Node* lhsCurrent = head;
Node* rhsCurrent = rhs.head->next;
do {
lhsCurrent->next = new Node(rhsCurrent->data);
rhsCurrent = rhsCurrent->next;
lhsCurrent = lhsCurrent->next;
} while (rhsCurrent!=NULL);
tail = lhsCurrent;
}
};
int main() {
List first(5);
first.append(6);
List second(first);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgTGlzdCB7CnByaXZhdGU6CglzdHJ1Y3QgTm9kZSB7CiAgICAJaW50IGRhdGE7IC8vIHNpbXBsaWZpY2F0aW9uCiAgICAgICAgTm9kZSAqbmV4dDsKICAgICAgICAKICAgICAgICBOb2RlKGludCBkKSB7CiAgICAgICAgCWRhdGEgPSBkOwogICAgICAgIAluZXh0ID0gTlVMTDsKICAgICAgICB9CiAgICB9OwogICAgCnByb3RlY3RlZDoKICAgIE5vZGUgKmhlYWQ7CiAgICBOb2RlICp0YWlsOwogICAgCiAgcHVibGljOiAgCiAgCUxpc3QoaW50IGQpIDogaGVhZChuZXcgTm9kZShkKSksIHRhaWwoaGVhZCkge30KICAJCiAgCXZvaWQgYXBwZW5kKGludCBkKSB7CiAgCQlOb2RlKiBuID0gbmV3IE5vZGUoZCk7CiAgCQl0YWlsLT5uZXh0ID0gbjsKICAJCXRhaWwgPSBuOwogIAl9CiAgCQogCUxpc3QoY29uc3QgTGlzdCYgcmhzKSB7CiAJCWlmIChoZWFkKSBkZWxldGUgaGVhZDsKIAkJCiAgCQloZWFkPW5ldyBOb2RlKHJocy5oZWFkLT5kYXRhKTsKICAJCQogIAkJTm9kZSogbGhzQ3VycmVudCA9IGhlYWQ7CiAgCQlOb2RlKiByaHNDdXJyZW50ID0gcmhzLmhlYWQtPm5leHQ7CiAgCQlkbyB7CiAgCQkJbGhzQ3VycmVudC0+bmV4dCA9IG5ldyBOb2RlKHJoc0N1cnJlbnQtPmRhdGEpOwkKCiAgCQkJcmhzQ3VycmVudCA9IHJoc0N1cnJlbnQtPm5leHQ7CgkJCWxoc0N1cnJlbnQgPSBsaHNDdXJyZW50LT5uZXh0OyAgCQkJCQogIAkJfSB3aGlsZSAocmhzQ3VycmVudCE9TlVMTCk7CiAgCQkKICAJCXRhaWwgPSBsaHNDdXJyZW50OwoJfQogfTsgCgppbnQgbWFpbigpIHsKCUxpc3QgZmlyc3QoNSk7CglmaXJzdC5hcHBlbmQoNik7CgkKCUxpc3Qgc2Vjb25kKGZpcnN0KTsKCXJldHVybiAwOwp9