Работа с односвязным списком 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;
}
комментарием пометил, где не получается реализовать