#include <iostream>
#include <memory>
#include <string>
struct link{
char data;
std::unique_ptr<link> next;
};
class LinkedList {
private:
std::unique_ptr<link> first;
public:
void Set(const std::string& s){
for (auto c : s) {
std::unique_ptr<link> node = std::move(first);
first = std::make_unique<link>();
first->data = c;
first->next = std::move(node);
}
}
void display() const
{
for (const link* node = first.get(); node != nullptr; node = node->next.get()) {
std::cout << node->data;
}
}
};
int main()
{
LinkedList l;
l.Set("123");
l.display();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8c3RyaW5nPgoKc3RydWN0IGxpbmt7CiAgICBjaGFyIGRhdGE7CiAgICBzdGQ6OnVuaXF1ZV9wdHI8bGluaz4gbmV4dDsKfTsKCmNsYXNzIExpbmtlZExpc3Qgewpwcml2YXRlOgogICAgc3RkOjp1bmlxdWVfcHRyPGxpbms+IGZpcnN0OwpwdWJsaWM6CgogICAgdm9pZCBTZXQoY29uc3Qgc3RkOjpzdHJpbmcmIHMpewogICAgICAgIAogICAgICAgIGZvciAoYXV0byBjIDogcykgewogICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8bGluaz4gbm9kZSA9IHN0ZDo6bW92ZShmaXJzdCk7CiAgICAgICAgICAgIGZpcnN0ID0gc3RkOjptYWtlX3VuaXF1ZTxsaW5rPigpOwogICAgICAgICAgICBmaXJzdC0+ZGF0YSA9IGM7CiAgICAgICAgICAgIGZpcnN0LT5uZXh0ID0gc3RkOjptb3ZlKG5vZGUpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgdm9pZCBkaXNwbGF5KCkgY29uc3QKICAgIHsKICAgICAgICBmb3IgKGNvbnN0IGxpbmsqIG5vZGUgPSBmaXJzdC5nZXQoKTsgbm9kZSAhPSBudWxscHRyOyBub2RlID0gbm9kZS0+bmV4dC5nZXQoKSkgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgbm9kZS0+ZGF0YTsKICAgICAgICB9CiAgICB9Cgp9OwoKCmludCBtYWluKCkKewogICAgTGlua2VkTGlzdCBsOwogICAgbC5TZXQoIjEyMyIpOwogICAgbC5kaXNwbGF5KCk7Cn0K