Новое здесь. Итак, я смог вычислить, как перебирать каждый элемент в A и сравнивать его с одним элементом в B. Если элементы не совпадают, сохраните этот элемент в другом списке и рекурсивно вызовите функцию для следующего узла в списке A. Очевидная проблема заключается в том, что он будет сравнивать все элементы в A только с первым элементом в B. Но у меня возникают трудности с тем, как рекурсивно обращаться к следующему элементу или узлу B, чтобы возвращать новый набор, содержащий значения в set A, которые не находятся в наборе B.Использование рекурсии в связанном списке
Да, списки отсортированы.
Node *diff(Node *a, Node *b) {
Node *tmp;
tmp = malloc(sizeof(Node));
if ((a == NULL) || (b == NULL)) //Base case
return NULL;
if (a->val != b->val){
tmp = a;
tmp->next = sset_diff(a->next, b);
}
return tmp;
return NULL; //Placeholder
}
Что именно вы хотите сделать? Сортированы ли списки? Также будьте осторожны с выделениями памяти и указателями. Вы не делаете то, что думаете. – asaelr
Я пытаюсь вернуть новый набор, содержащий значения в наборе A, которые не находятся в наборе B. – Jase