Проблема с пересечением множества на С++

Хочу написать функцию пересечения односвязанного списка. Не могу понять, в чем ошибка:

static void tlist_diff(tlist* res, const tlist* l1, const tlist* l2) {
  const node* la = l1->head;
  const node* lb = l2->head;
  while ((la != NULL) && (lb != NULL)) {
      if (la->val < lb->val) ++la;
      else if (lb->val < la->val)
          ++lb;
      else {
          res = &l1;
          ++res, ++la, ++lb;
      }
  }

  for (; la != NULL; la = la->next)
      tlist_add(res, la->val);
}

Ответы (0 шт):