Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    estrazione testa lista c

    Perchè mi da tutti questi errori nella funzione EstrazioneTestaLista?

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    struct EL{
           char info;
           struct EL *prox;
           };
           
    typedef struct EL Elemlista;
    typedef Elemlista *Listadinomi;
    typedef enum{TRUE,FALSE}   boolean;
    
    void Inizializza(Listadinomi *Lista);// funzione che inizializza lista
    void InserisciInTesta(Listadinomi *Lista, int x);
    boolean ListaVuota(Listadinomi Lista);
    void InserisciInCoda(Listadinomi *Lista,char y);
    void EstrazioneTestaLista(Listadinomi Lista);
    
    int main(int argc, char *argv[])
    {
      Listadinomi lista1;
      int x;
      x=10;
      char y='t';
      
      Inizializza(&lista1); //inizializzazione lista
      
      InserisciInTesta(&lista1,x);
      InserisciInCoda(&lista1,y);
      
    // EstrazioneTestaLista(Listadinomi lista1);
      
      if((ListaVuota(lista1))==TRUE){
                     printf("la lista e' vuota\n");
      //}else{
           // printf("la lista contiene: %d , %c\n",x,y);}
      
    
     
      system("PAUSE");	
      return 0;
    }
    
    void Inizializza(Listadinomi *Lista){
                *Lista=NULL;
    }
    
    boolean ListaVuota(Listadinomi Lista){
            if(Lista==NULL) return TRUE; 
            else return FALSE;
            }
            
    void InserisciInTesta(Listadinomi *Lista, int x){
         Elemlista *punt;
         punt=malloc(sizeof(Elemlista));
         
         punt->info=x;
         punt->prox=*Lista;
         *Lista=punt;
    }
         
    void InserisciInCoda(Listadinomi *Lista,char y){
         if((ListaVuota(*Lista))==TRUE){
                       Elemlista *punt;
                       punt=malloc(sizeof(Elemlista));
                       punt->info=y;
                       punt->prox=NULL;
                       *Lista=punt;
                       } else {InserisciInCoda(&((*Lista)->prox),y);
                       } 
                       }
    
    
    void EstrazioneTestaLista(Listadinomi Lista){
         Elemlista s;
        *Lista=s;
        *Lista=*Lista->prox;
         free(s); }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    "tutti questi errori" ... quali ???
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Un errore è dovuto alla mancanza di una parentesi...

    Mi dice
    incompatible type for argument 1 of `free'

    eppure s contiene l'indirizzo della struttura da cancellare.....
    quindi free(s) dovrebbe essere corretto

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Hai scritto

    Elemlista s;

    quindi s è una struttura e non un indirizzo ottenuto da una malloc. Quindi, come fai ad utilizzarlo in una free?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Giusto....

    Quindi è corretto così?

    void EstrazioneTestaLista(Listadinomi Lista){
    Elemlista *s;
    s=malloc(sizeof(Elemlista));
    Lista=s;
    Lista=Lista->prox;
    free(s);
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Dal punto di vista sintattico va bene (non ci sono errori di compilazione e te ne sarai accorto anche da solo, compilando il codice).

    Ma dal punto di vista della logica del programma, non so se è corretto (se fa quello che pensi) perché non ho avuto tempo e modo di esaminare la logica di tutto il resto del codice.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Grazie per l'aiuto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.