witam, mam problem przy prostym sortowaniu przez wybieranie, aż wstyd.
template <class T>
element<T>* Lista<T>::find_min(element<T>*poczatek){
element<T> *pom=poczatek;
element<T> *min=pom;
min->wart=pom->wart;
pom=pom->next;
while (pom){
if (pom->wart<min->wart)
min=pom;
pom=pom->next;
}
return min;
}
template <class T>
void Lista<T>::swap(element<T> *a,element<T> *b){
element <T>* temp = new element <T>;
cout<<"test 2: "<<a->wart;
temp->wart=a->wart;
a->wart=b->wart;
b->wart=temp->wart;
}
template <class T>
Lista<T> Lista<T>::sortuj(){
element<T> *pom=this->head;
cout<<"test: "<<pom->wart;
while (pom->next){
swap(pom,find_min(pom));
pom=pom->next;
}
return *this;
}
problem polega na tym: powiedzmy ze input to lista 2,1. powinno posortowac i wypisac 1,2. wypisuje 1,0. problem jest w przekazaniu parametru pierwszego do funkcji find_min. output z programu jest dokladnie taki:
test : 2
test : 0
1, 0
widac wiec ze przy przekazaniu parametru pom do funkcji find_min on jakims cudem sie zmienia z 2 na 0... z góry dziękuję za pomoc