Dodawanie na początek listy

0

Stworzyłem listę elementów i próbuje dodać element na jej początek lecz wyświetla mi taki błąd: "invalid conversion from 'void*' to'elListy* {aka el*}' [-fpermissive]". Ktoś wie co jest nie tak? Poniżej kod programu.

#include<stdio.h>
#include<stdlib.h>

struct el {
        int klucz ;
         struct el *nast;
          };

 typedef struct el elListy ;
 typedef elListy * lista ;
      


void DNPL(lista *l, int i ) // l wsk. na listę!
 {
  lista p = ( lista )malloc(sizeof( elListy ));
  p->klucz = i;
  p->nast = *l;
  *l = p;
 }
 
 int main() 
 {
      
	elListy *l=0, *p=0;
	 int n=5;
	 while(n--){
	 p = malloc(sizeof( elListy ));
	 p->klucz = n+1;
	 p->nast = l;
	 l = p;
 				}	
     lista _l = 0;
     DNPL(&_l, 3);
     DNPL(&_l, 2);
     DNPL(&_l, 1);
     DNPL(&_l->nast, 0);
     WyswietlListe(_l);
     return 0;
}
 
3

p = malloc(sizeof( elListy )); Nie rzutujesz z void* na lista aka struct el*.

  1. Na przyszłość by było miło, gdybyś mówił, GDZIE kompilator ma problem,
  2. tak jak napisał @kaczus: nie zwalniasz pamięci,
  3. staraj się jednolicie formatować kod. Tragedii nie ma, ale jest słabo.
3

W mainie dodaj konwersje przy malloc-u

Dodatkowo brakuje zwolnienia pamięci!!!

0

Dziękuje za pomoc. Tak naprawdę wszystko było dobrze tylko zapisałem złe rozszerzenie jako *.cpp, a nie jako *.c.

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