#include <iostream>
using namespace std;
struct list { int data; list* next; };
list* cons(int n, list* l) { return new list({n,l}); }
struct List {
list* begin;
list* end;
void push_front(int n) {
begin = cons(n,begin);
}
void push_back(int n) {
list* newend = cons(0,NULL); // 새로운 end 를 만든다
end->data = n;
end->next = newend;
end = newend;
}
};
void printList(List l) {
for(list* p=l.begin; p!=l.end; p=p->next) {
cout <<p->data <<" ";
}
cout <<endl;
}
int main(void) {
list* lend = cons(0,NULL);
list* lbegin = cons(1,cons(2,cons(3,lend)));
List lis = {lbegin, lend};
lis.push_front(9);
lis.push_back(4);
printList(lis);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IGxpc3QgeyBpbnQgZGF0YTsgbGlzdCogbmV4dDsgfTsKCmxpc3QqIGNvbnMoaW50IG4sIGxpc3QqIGwpIHsgcmV0dXJuIG5ldyBsaXN0KHtuLGx9KTsgfQoKc3RydWN0IExpc3QgewoJbGlzdCogYmVnaW47CglsaXN0KiBlbmQ7Cgl2b2lkIHB1c2hfZnJvbnQoaW50IG4pIHsKCQliZWdpbiA9IGNvbnMobixiZWdpbik7Cgl9Cgl2b2lkIHB1c2hfYmFjayhpbnQgbikgewoJCWxpc3QqIG5ld2VuZCA9IGNvbnMoMCxOVUxMKTsgLy8g7IOI66Gc7Jq0IGVuZCDrpbwg66eM65Og64ukCgkJZW5kLT5kYXRhID0gbjsKCQllbmQtPm5leHQgPSBuZXdlbmQ7CgkJZW5kID0gbmV3ZW5kOwoJfQp9OwoKdm9pZCBwcmludExpc3QoTGlzdCBsKSB7Cglmb3IobGlzdCogcD1sLmJlZ2luOyBwIT1sLmVuZDsgcD1wLT5uZXh0KSB7CgkJY291dCA8PHAtPmRhdGEgPDwiICI7Cgl9Cgljb3V0IDw8ZW5kbDsKfQoKCmludCBtYWluKHZvaWQpIHsKCWxpc3QqIGxlbmQgPSBjb25zKDAsTlVMTCk7CglsaXN0KiBsYmVnaW4gPSBjb25zKDEsY29ucygyLGNvbnMoMyxsZW5kKSkpOwoJCglMaXN0IGxpcyA9IHtsYmVnaW4sIGxlbmR9OwoJbGlzLnB1c2hfZnJvbnQoOSk7CglsaXMucHVzaF9iYWNrKDQpOwoJCglwcmludExpc3QobGlzKTsKICAgIHJldHVybiAwOwp9Cg==