struct node {
  int data;
  node* next;
};

node* create_list();
void destroy_list(node* base);
void push_back(node* base, int data);
void erase(node* base, node* target);
node* find(node* base, int data);


node* create_list()
{
  return new node{0, nullptr};
}

void destroy_list(node* base)
{
  while( base )
  {
    node* p = base->next;
    delete base;
    base = p;
  }
}

void push_back(node* base, int data)
{
  node* p = base;
  while( p->next != nullptr )
    p = p->next;

  p->next = new node{data, nullptr};
}

void erase(node* base, node* target)
{
  node* p = base;
  while( p->next != target && p->next != nullptr )
    p = p->next;

  if(p->next != nullptr)
  {
    p->next = target->next;
    delete target;
  }
}

node* find(node* base, int data)
{
  node* p = base->next;
  while( p->data != data && p != nullptr)
    p = p->next;
 
  return p;
}


이거이상 간단하게 짜긴 힘들정도로 존나 간단하게 짯으니까 

이거보고 이해해봐 ㅇㅅㅇ