Cześć wszystkim.
Uczę się nieco o listach więc napisałem sobie programik który wykonuje na nich podstawowe operacje jak dodawanie elementów,odwracanie,itp.
Pomimo gapienia się w kod od ponad 20 minut nie mogę ogarnąć dlaczego scalanie dwóch posortowanych tablic mi nie wychodzi.( są scalane ale że tak powiem jedna po drugiej a nie z zachowaniem monotoniczności)
Byłbym wdzięczny gdyby ktoś rzucił na to okiem i udzielił mi jakiejś wskazówki.
Ja zazwyczaj jak coś sprawdzam to lubię sobie wrzucić w IDE także w razie czego wrzucam link do całego kodu ale że jest on dosyć długi to tutaj wkleję tylko powiązane z problemem funkcje.
Problem (oczywiście oprócz tego między fotelem a klawiaturą) jest oczywiście w funkcji o nagłówku "scalaj" aczkolwiek gdybyście wychwycili jakieś inne błędy albo coś jest brzydko napisane to bardzo proszę o komentarz.
Link do całego kodu : http://pastebin.com/1gZbi2QA
Funkcje "biorące udział w problemie" :
struct node
{
int data;
node * next;
};
void scal(node * &l1,node * l2)
{
node * scalona_lista = new node;
scalona_lista->next = NULL;
scalona_lista = NULL;
while( l1 != NULL && l2 != NULL)
{
if(l1->data >= l2->data)
{
dodaj_na_koniec(scalona_lista,l1->data);
l1 = l1->next;
}
else
{
dodaj_na_koniec(scalona_lista,l2->data);
l2 = l2->next;
}
}
while( l1 != NULL)
{
dodaj_na_koniec(scalona_lista,l1->data);
l1 = l1->next;
}
while(l2 != NULL)
{
dodaj_na_koniec(scalona_lista,l2->data);
l2 = l2->next;
}
cout<<"Oto scalona lista : ";
wypisz_liste(scalona_lista);
}
void dodaj_na_koniec(node * &head,int added_data)
{
if(head == NULL)
{
head = new node;
head->data = added_data;
}
else
{
node * przesuwak = head;
while(przesuwak->next != NULL)
{
przesuwak = przesuwak->next;
}
node * nowy_ogon = new node;
nowy_ogon->data = added_data;
przesuwak->next = nowy_ogon;
}
}