Дан длинный список и короткий. Удалить из длинного первый встретившийся короткий список

Помогите пожалуйста с реализацией задачи.

Код:

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;
} ```

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