Работа с односвязным списком c++

Разработать функцию, которая формирует список L, включив в него по одному разу элементы, значения которых входят хотя бы в один из списков L1 и L2. Даже близко не получилось сделать, совсем не понимаю как можно сравнить элементы 2 разных списков.

#include <iostream>
#include <string>
using namespace std;

class List 
{
public:
    List();

    void push_back(int);
    void zapolnenie();
    void sozdanieL(List, List);// не понимаю как реализовать
    void del_chet(); // не работает
    int GetSize() { return size;}

    int& operator[](const int index);

private:
    class Node
    {
    public:
        Node *pNext;
        int data;
        Node(int data=int(), Node *pNext = nullptr)
        {
            this->data = data;
            this->pNext = pNext;

        }
    };
    int size;
    Node *head;
};

List::List()
{
    size = 0;
    head = nullptr;
}



void List::push_back(int data)
{
    if (head == nullptr)
    {
        head = new Node(data);

    }
    else
    {
        Node *current = this->head;

        while (current->pNext != nullptr)
        {
            current = current->pNext;
        }
        current->pNext = new Node(data);
    }

    size++;
}

void List::zapolnenie()
{
    int number;
    cin >> number;
    for (int i = 0; i < number; i++)
    {
        push_back(rand() % 10);
    }
}

void List::sozdanieL(List, List) // включив в него по одному разу элементы, значения которых входят хотя бы в один из списков L1 и L2.
{
    List L;
    for (int i = 0; i < GetSize(); i++)
    {
     
    }
}

void List::del_chet() // удалить из списка L1 все узлы в четных позициях
{
    for (int index = 1; index < GetSize(); index++)
    {
        if (index % 2 == 0)
        {
            Node* previous = this->head;
            for (int i = 0; i < index - 1; i++)
            {
                previous = previous->pNext;
            }

            Node* toDel = previous->pNext;
            previous->pNext = toDel->pNext;

            delete toDel;
            size--;

        }
    }

}



int& List::operator[](const int index)
{
    int counter = 0;
    Node *current = this->head;
    while (current != nullptr)
    {
        if (counter == index)
        {
            return current->data;
        }
        current = current->pNext;
        counter++;
    }


}

}




int main()
{
    setlocale(LC_ALL, "ru");

    List L1;
    List L2;

    L1.zapolnenie();
    for (int i = 0; i < L1.GetSize(); i++)
    {
        cout << L1[i] << endl;
    }
    cout << endl;
    L1.del_chet();

    for (int i = 0; i < L1.GetSize(); i++)
    {
        cout << L1[i] << endl;
    }
    return 0;


}

комментарием пометил, где не получается реализовать


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