Dodanie do listy w C

0

Witam jestem początkującym programistą, nie wiem gdzie mam błąd

struct lista
{
    struct lista* next;
    double czynnik;
};

struct lista *nowy_elem()
{
   return calloc(1,sizeof(struct lista));
};

void dodaj_sort( struct lista **phead, double nowy)
{
    struct lista *pnowy;
    if (*phead == NULL) /*lista pusta*/
    {
        (*phead) = nowy_elem();
        (*phead)->czynnik = nowy;
    }
    else /* lista niepusta */
    {
     if((*phead)->czynnik <= nowy)
     {
         pnowy = nowy_elem();
         pnowy->czynnik = nowy;
         pnowy->next = (*phead);
         *phead = pnowy;
     }
     else dodaj_sort((*phead)->next,nowy);
    }

};

 

Prosił bym o wyjaśnienie błędu, średnio jeszcze rozumiem wskaźniki

0

Jaki błąd?

0

Errora nie wyrzuca ale też nie dodaje do listy mam 1 ostrzeżenie "passing argument 1 of dodaj_sort from incompatible pointer type w linijce
: ' else dodaj_sort((*phead)->next,nowy); ' - ostatnia linijka kodu.

1
dodaj_sort(&(*phead)->next,nowy);

i usuń średniki przy funkcjach.

0

Dzięki ci, wybawco

0

A mógł by mi jeszcze ktoś powiedzieć dlaczego ten kod :

void usun(struct lista **phead)
{
    if((*phead) != NULL)
        usun(&(*phead));
    free(*phead);
} 

nie chce usunąć listy tylko zawiesza program (kompilator nie zgłasza sprzeciwu).

0

Już wiem usun(&(*phead)->next);
sory za głupie pytanie

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