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