Сложение и вычитание элементов двух списков

Есть код:

#include <iostream>

template<typename T> class Node {
public:
    Node *pNext;
    T data;

    Node(T data = T(), Node *pNext = nullptr) {
        this->data = data;
        this->pNext = pNext;
    }
};

template<typename T> class List {
public:
    List();
    ~List();

    void push_back(T data);
    int GetSize() {return Size;}
    T& operator[](const int index);
    void pop_front();
    void clear();
    void sum(int first,int second);

private:
    int Size;
    Node<T> *head;
};

template<typename T>
List<T>::List() {
    Size = 0;
    head = nullptr;
}

template<typename T> //деструктор
List<T>::~List() {
    clear();
}

template<typename T>
void List<T>::push_back(T data) { // добавление
    if (head == nullptr) {
        head = new Node<T>(data);
    }else{
        Node<T> *current = this->head;
        while (current->pNext != nullptr) {
            current = current->pNext;
        }
        current->pNext = new  Node<T>(data);
    }
    Size++;
}

template<typename T>
void List<T>::pop_front() { // удаление
    Node<T> *temp = head;
    head = head->pNext;
    delete temp;
    Size--;
}

template<typename T>
void List<T>::clear() {
    while (Size) {
        pop_front();
    }
}

template<typename T>
T & List<T>::operator[](const int index) { // перегрузка
    int counter = 0;
    Node<T> *current = this->head;
    while(current!=nullptr) {
        if (counter == index) {
            return current->data;
        }
        current = current->pNext;
        counter++;
    }
}

template<typename T>
void List<T>::sum(int first, int second) {
    int result = 0;
    result = first+second;
    std::cout<<result<<std::endl;
}


int main() {
    List<int> lst;
    lst.push_back(1);
    lst.push_back(2);
    lst.push_back(3);

    List<int> list;
    list.push_back(5);
    lst.push_back(1);
    lst.push_back(7);

    for (int i = 0;i < lst.GetSize();i++) {
        lst[i],list[i]);
    }
    return 0;
}

Так вот, нужна помощь в реализации сложения и вычитания элементов двух списков. Если кто напишет ещё и дружественную функцию какую-нибудь, буду очень благодарен.


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