Shalom, ok bede pamietac zeby nie modyfikowac, dzieki. Tylko ze nie o to pytalem zakladajac ten watek a o instrukcje wewnatrz funkcji insert
_13th_Dragon, sprobowalem zrobic w ten sposob i to nie dziala
Konkretnie nie wiem co miales na mysli w tych 3 linijkach
-
if(prev) prev->next=el;
Ustawiles wczesniej prev na null i gdy bylo jako przesuniecie tzn wstawialismy el nie na poczatek listy to prev jest teraz gdzies w srodku. I tu sie zgodze ze prev->next = el
Powinno byc jeszcze el->next = p ?
-
else head=el;
// jesli wstawiany element jest najmniejszy to ustawiamy go na glowe, ale to nie powinno byc cos w stylu el->next = head; i potem head=el ?
-
return el; // to juz nie mam pojecia, zgodze sie jak to bylby 1 element gdyz musze zwrocic poczatek listy
Poprawiajac to doszedlem do tego
pnode *insert(pnode *head, pnode *el)
{
pnode *prev=NULL;
pnode *p=head;
while((p)&&(p->val<el->val))
{
prev=p;
p=p->next;
}
if(prev)
{
prev->next=el;
el->next=p;
}
else
{
el->next=head;
head=el;
}
return head;
}
Problem w tym ze na zajeciach robilismy to podobnie, ale prowadzacy powiedzial ze lepiej zamiast stosowac konstrukcje if..else zastosowac tego wartownika