#include <iostream>
using namespace std;
struct linked {
int n;
linked* prev;
linked* next;
};
void deleteE(linked* elem) {
elem->prev->next = elem->next;
elem->next->prev = elem->prev;
free(elem);
return;
}
linked* lstinit(int n) {
linked* elem = (linked*)malloc(sizeof(linked));
elem->n = n;
elem->prev = elem;
elem->next = elem;
return elem;
}
linked* push(linked* elem, int n) {
linked* newe = (linked*)malloc(sizeof(linked));
newe->n = n;
newe->prev = elem;
newe->next = elem->next;
newe->next->prev = newe;
newe->prev->next = newe;
return newe;
}
void removelst(linked* elem) {
elem->prev->next = NULL;
while(elem->next != NULL) {
elem = elem->next;
free(elem->prev);
}
free(elem);
}
int main() {
int k = 10;
linked* first = lstinit(0);
linked* last = first;
for(int i=1;i<k;i++) {
last = push(last, i);
}
// 연결 끊기
deleteE(first->next);
cout << first->next->n << endl;
// 리스트 삭제
removelst(first);
cout << first->next->n;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnN0cnVjdCBsaW5rZWQgewogICAgaW50IG47CiAgICBsaW5rZWQqIHByZXY7CiAgICBsaW5rZWQqIG5leHQ7Cn07CiAKdm9pZCBkZWxldGVFKGxpbmtlZCogZWxlbSkgewogICAgZWxlbS0+cHJldi0+bmV4dCA9IGVsZW0tPm5leHQ7CiAgICBlbGVtLT5uZXh0LT5wcmV2ID0gZWxlbS0+cHJldjsKICAgIGZyZWUoZWxlbSk7CiAgICByZXR1cm47Cn0KCmxpbmtlZCogbHN0aW5pdChpbnQgbikgewogICAgbGlua2VkKiBlbGVtID0gKGxpbmtlZCopbWFsbG9jKHNpemVvZihsaW5rZWQpKTsKICAgIGVsZW0tPm4gPSBuOwogICAgZWxlbS0+cHJldiA9IGVsZW07CiAgICBlbGVtLT5uZXh0ID0gZWxlbTsKICAgIHJldHVybiBlbGVtOwp9CgpsaW5rZWQqIHB1c2gobGlua2VkKiBlbGVtLCBpbnQgbikgewogICAgbGlua2VkKiBuZXdlID0gKGxpbmtlZCopbWFsbG9jKHNpemVvZihsaW5rZWQpKTsKICAgIG5ld2UtPm4gPSBuOwogICAgbmV3ZS0+cHJldiA9IGVsZW07CiAgICBuZXdlLT5uZXh0ID0gZWxlbS0+bmV4dDsKICAgIG5ld2UtPm5leHQtPnByZXYgPSBuZXdlOwogICAgbmV3ZS0+cHJldi0+bmV4dCA9IG5ld2U7CiAgICByZXR1cm4gbmV3ZTsKfQoKdm9pZCByZW1vdmVsc3QobGlua2VkKiBlbGVtKSB7CiAgICBlbGVtLT5wcmV2LT5uZXh0ID0gTlVMTDsKICAgIHdoaWxlKGVsZW0tPm5leHQgIT0gTlVMTCkgewogICAgICAgIGVsZW0gPSBlbGVtLT5uZXh0OwogICAgICAgIGZyZWUoZWxlbS0+cHJldik7CiAgICB9CiAgICBmcmVlKGVsZW0pOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBrID0gMTA7CiAgICBsaW5rZWQqIGZpcnN0ID0gbHN0aW5pdCgwKTsKICAgIGxpbmtlZCogbGFzdCA9IGZpcnN0OwogICAgZm9yKGludCBpPTE7aTxrO2krKykgewogICAgCWxhc3QgPSBwdXNoKGxhc3QsIGkpOwoJfQogICAgLy8g7Jew6rKwIOuBiuq4sAogICAgZGVsZXRlRShmaXJzdC0+bmV4dCk7CiAgICBjb3V0IDw8IGZpcnN0LT5uZXh0LT5uIDw8IGVuZGw7CiAgICAvLyDrpqzsiqTtirgg7IKt7KCcCiAgICByZW1vdmVsc3QoZmlyc3QpOwogICAgY291dCA8PCBmaXJzdC0+bmV4dC0+bjsKCXJldHVybiAwOwp9