Napisanie funkcji zaprzyjaźnionej, sumującej dwie listy jednokierunkowe

0

Witam! Mam problem z napisaniem funkcji zaprzyjaźnionej klasy lista(jednokierunkowa), która doda do siebie L1+L2.
Nie umiem powiązać tego wskaźnikami. Umiem dodawać elementy do isty, ale nie potrafie dodać dodać do siebie dwóch list.
proszę o pomoc. ;)

0

Bardziej jako pseudo-kod:

friend List concat_lists(List* lists) {
  List result;
  foreach(auto list : lists) {
    foreach(auto item : list) {
      result.add(item);
    }
  }

  return result;
}
0

Zakładając, że obie listy są niepuste, to będzie to mniej więcej tak wyglądało:

friend List* concat(List* Lista1, List* Lista2){
  List *tmp1;
  tmp1=Lista1;
  while(tmp1->nastepny != NULL){
    tmp1 = tmp1->nastepny;
  }
  tmp1->nastepny = Lista2;
  return Lista1;
}
1
#include <list>
#include <iostream>

template<typename T0>
class WTF_list : public std::list<T0>{
    template<typename T1>
    friend WTF_list<T1> operator+(const WTF_list<T1> &a, const WTF_list<T1> &b);
};

template<typename T>
WTF_list<T> operator+(const WTF_list<T> &a, const WTF_list<T> &b){
    WTF_list<T> result;
    result.insert(result.end(), a.begin(), a.end());
    result.insert(result.end(), b.begin(), b.end());
    return result;
}

int main() {
    WTF_list<int> a, b, c;
    a.push_back(1);
    b.push_back(2);
    c = a + b;
    for(auto &item : c)
        std::cout << item << ' ';
    return 0;
}
    

1 użytkowników online, w tym zalogowanych: 0, gości: 1