Дан длинный список и короткий. Удалить из длинного первый встретившийся короткий список
Помогите пожалуйста с реализацией задачи.
Код:
using namespace std;
struct Node // Узел
{
int value; // Значение узла (значение)
Node* next; // Следующий элемент узла
};
int main(int argc, char const* argv[]) {
setlocale(LC_ALL, "Rus");
Node* head = NULL; // голова списка
Node* tail = NULL; // последний элемент списка
Node* head2 = NULL;
Node* tail2 = NULL;
int currentValue; // текущее значение
Node* newNode = 0; // текущий узел
int currentValue2;
Node* newNode2 = 0;
int J;
cout << "Введите кол-во чисел в списке: ";
cin >> J;
for (int i = 0; i < J; i++) {
cout << "Введите число: ";
cin >> currentValue;
newNode = new Node();
newNode->value = currentValue;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
tail = newNode;
}
else {
tail->next = newNode;
tail = newNode;
}
}
Node* current = head;
int N;
cout << "Введите кол-во чисел в списке: ";
cin >> N;
for (int i = 0; i < N; i++) {
cout << "Введите число: ";
cin >> currentValue;
newNode = new Node();
newNode->value = currentValue;
newNode->next = NULL;
if (head2 == NULL) {
head2 = newNode;
tail2 = newNode;
}
else {
tail2->next = newNode;
tail2 = newNode;
}
}
Node* current1 = head2; //Указатель на первый элемент списка (на голову)
cout << "\nСписок после изменений: \n";
while (current != NULL) {
cout << current->value << " ";
current = current->next;
}
cout << endl;
return 0;
} ```