Errore allocazione in coda lista

di il
3 risposte

Errore allocazione in coda lista

Salve a tutti !! Ho un problema con l'allocazione in coda alla lista non so perche ma mi da errore (error: invalid operands to binary == (have 'Tlista' {aka 'struct Slista'} and 'void *') alla riga 44 ( if (*l==NULL)) nella funzione aggiungiInCoda mi potete dare una mano!!
rigrazio tutti in anticipo per le risposte
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
/*------------------------------------------------LISTA------*/
typedef struct Slista{
    char par[25];
    struct Slista *next;
}Tlista;

/*------------------------------------------------PROTOTIPI FUNZIONI------*/
void crealista(Tlista *l);
void aggiungiInCoda(Tlista* l,char* T);
void stampalista(Tlista* l);
/*------------------------------------------------MAIN------*/

int main()
{
    char testo[2000];
    char *token;
    Tlista *l;

    printf("inserire testo massimo 2000 caratteri1:\n");
    gets(testo);

    crealista(l);

    token=strtok(testo," ");
    while(token!=NULL){
        aggiungiInCoda(l,token);
        token=strtok(NULL," ");
    }
    stampalista(l);

    return 0;
}
/*------------------------------------------------IMPLEMENTO FUNZIONI------*/
void crealista(Tlista *l){
    l=NULL;
}
void aggiungiInCoda(Tlista *l,char* T){
    Tlista* p1;
    /*caso lista vuota*/
    if(*l==NULL){
        *l=malloc(sizeof(Tlista));
        strcpy(*l->par,T);
        *l->next=NULL;
        return;
    }


    /*caso lista con un elemento*/
    p1=*l;
    /*vaso avanti fino alla fine della lista*/à
    while(p1->next!=NULL){
        p1=p1->next;
    }
    /*qui p1 punta all'iltima struttura: ne creo una nuova e sposto il puntatore in avanti*/
    p1->next=malloc(sizeof(Tlista));
    p1=p1->next;
    /*metto i valori nell'ultima struttura*/
    strcpy(p1->par,T);
    p1->next=NULL;




}
void stampalista(Tlista* l){
     while (l != NULL) {
        printf("%s ", l->par);
        l = l->next;
    }
}

3 Risposte

  • Re: Errore allocazione in coda lista

    Alla riga 44 stai valutando se l'oggetto puntato vale NULL. Rivedi anche le istruzioni successive per lo stesso errore.
  • Re: Errore allocazione in coda lista

    Eh lo so ma non capisco perché mi dice errore cioe io non ne vedo
  • Re: Errore allocazione in coda lista

    Come non ne vedi? Te l'ho appena detto, o forse sono stato troppo sintetico. Stai valutando l'oggetto puntato e non il puntatore, significa che hai dereferenziato il puntatore provocando l'errore. Se scrivi:
    if ( *pointer == NULL )
    stai valutando se un oggetto è NULL. Perché non dovrebbe darti errore?

    Penso sia necessaria una ripassatina ai puntatori e all'uso dell'operatore di indirezione.
    MYTYPE * pointer; // Dichiarazione di un puntatore;
    pointer = &myObject; // definizione di un puntatore;
    pointer; // il puntatore;
    *pointer; // l'oggetto puntato.
Devi accedere o registrarti per scrivere nel forum
3 risposte