#include <iostream>
using namespace std;
class List
{
struct Node
{
int data;
Node *next = nullptr;
Node(int data1) : data(data1) { }
};
Node *head, *tail;
public:
List() : head(nullptr), tail(nullptr) { }
List(const List&) = delete;
List& operator=(const List&) = delete;
~List()
{
Node *n = head;
while (n)
{
Node *next = n->next;
delete n;
n = next;
}
}
void push_back(int data)
{
Node **n = (tail) ? &(tail->next) : &head;
*n = new Node(data);
tail = *n;
}
friend ostream& operator<<(ostream &os, const List &list)
{
Node *n = list.head;
if (n)
{
os << n->data;
while (n = n->next)
{
os << ',' << n->data;
}
}
return os;
}
};
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6};
List list;
for(int elem : arr)
list.push_back(elem);
cout << list;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgTGlzdAp7CiAgICBzdHJ1Y3QgTm9kZQogICAgewogICAgICAgIGludCBkYXRhOwogICAgICAgIE5vZGUgKm5leHQgPSBudWxscHRyOwoKICAgICAgICBOb2RlKGludCBkYXRhMSkgOiBkYXRhKGRhdGExKSB7IH0KICAgIH07CgogICAgTm9kZSAqaGVhZCwgKnRhaWw7CgpwdWJsaWM6CiAgICBMaXN0KCkgOiBoZWFkKG51bGxwdHIpLCB0YWlsKG51bGxwdHIpIHsgfQogICAgTGlzdChjb25zdCBMaXN0JikgPSBkZWxldGU7CiAgICBMaXN0JiBvcGVyYXRvcj0oY29uc3QgTGlzdCYpID0gZGVsZXRlOwoKICAgIH5MaXN0KCkKICAgIHsKICAgICAgICBOb2RlICpuID0gaGVhZDsKICAgICAgICB3aGlsZSAobikKICAgICAgICB7CiAgICAgICAgICAgIE5vZGUgKm5leHQgPSBuLT5uZXh0OwogICAgICAgICAgICBkZWxldGUgbjsKICAgICAgICAgICAgbiA9IG5leHQ7IAogICAgICAgIH0KICAgIH0KCiAgICB2b2lkIHB1c2hfYmFjayhpbnQgZGF0YSkKICAgIHsKICAgICAgICBOb2RlICoqbiA9ICh0YWlsKSA/ICYodGFpbC0+bmV4dCkgOiAmaGVhZDsKICAgICAgICAqbiA9IG5ldyBOb2RlKGRhdGEpOwogICAgICAgIHRhaWwgPSAqbjsKICAgIH0KCiAgICBmcmllbmQgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtICZvcywgY29uc3QgTGlzdCAmbGlzdCkKICAgIHsKICAgICAgICBOb2RlICpuID0gbGlzdC5oZWFkOwogICAgICAgIGlmIChuKQogICAgICAgIHsKICAgICAgICAgICAgb3MgPDwgbi0+ZGF0YTsKICAgICAgICAgICAgd2hpbGUgKG4gPSBuLT5uZXh0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBvcyA8PCAnLCcgPDwgbi0+ZGF0YTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gb3M7CiAgICB9Cn07CgppbnQgbWFpbigpCnsKICAgIGludCBhcnJbXSA9IHsxLCAyLCAzLCA0LCA1LCA2fTsKICAgIExpc3QgbGlzdDsKICAgIGZvcihpbnQgZWxlbSA6IGFycikKICAgICAgICBsaXN0LnB1c2hfYmFjayhlbGVtKTsKICAgIGNvdXQgPDwgbGlzdDsKICAgIHJldHVybiAwOwp9