Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di ggd94
    Registrato dal
    Aug 2014
    residenza
    Rome
    Messaggi
    15

    [C] Liste: aggiungere elemento in una posizione data

    Salve a tutti .. sto continuando con i miei esercizi in C ma trovo molte difficoltà con le liste.Sto svolgendo un esercizio che mi chide di aggiungere un elemento nella posizione data n,ma non riesco a capire per quale motivo creando la funzione che riporterò di seguito la lista che mi stampa è quella iniziale ,o meglio,non mi inserisce nessun elemento nella posizione data. dal profondo della disperazionegrazie a tutti in anticipo...
    codice:
    filaSCL aggiungi(filaSCL fila,Persona p){
        filaSCL temp=(nodoFilaSCL*)malloc(sizeof(nodoFilaSCL));
        temp->elemento=p;
        temp->next=NULL;
        filaSCL ultimo=fila;
        while(ultimo->next!=NULL){
            ultimo=ultimo->next;
        }
        ultimo->next=temp;
        filaSCL temp1=fila;
        return temp1;
    }
    
    filaSCL raccomanda(filaSCL fila, Persona p, const int n){
        int len=lunghezza(fila);
        if(n>len){
            return aggiungi(fila,p);
        }
        else{
            int num=n;
            filaSCL ultimo=fila;
            while(num!=1){
                ultimo=ultimo->next;
                num--;
            }
            filaSCL temp=(nodoFilaSCL*)malloc(sizeof(nodoFilaSCL));
            filaSCL temp1=ultimo;
            temp->elemento=p;
            temp->next=temp1;
            ultimo=temp;
            filaSCL fila2=fila;
            return fila2;
        }
    }
                
            
    
    int lunghezza(filaSCL fila){
        if(fila!=NULL){
            return 1+lunghezza(fila->next);
        }
        return 0;
    }

  2. #2
    ma la struttura che hai creato dov'è?

  3. #3
    Utente di HTML.it L'avatar di ggd94
    Registrato dal
    Aug 2014
    residenza
    Rome
    Messaggi
    15
    questo è il mio file header :
    codice:
    struct persona{
        char nome[50];
        char cognome[50];
    };
    typedef struct persona Persona;
    
    struct elemSCL{
        Persona elemento;
        struct elemSCL* next;
    };
    typedef struct elemSCL nodoFilaSCL;
    typedef nodoFilaSCL* filaSCL;
    
    void creaFila(filaSCL* fila,int n);
    
    int is_empty(filaSCL fila);
    
    Persona* capofila(filaSCL fila);
    
    filaSCL servi_capofila(filaSCL fila);
    
    filaSCL aggiungi(filaSCL fila,Persona p);
    
    void stampa(filaSCL fila);
    
    filaSCL raccomanda(filaSCL fila, Persona p, const int n);

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Gli errori possono stare in qualsiasi parte del programma, compreso il main.

    Se non fornisci tutto il sorgente compilabile non si possono fare dei test ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di ggd94
    Registrato dal
    Aug 2014
    residenza
    Rome
    Messaggi
    15
    ok grazie e scusate...posto di seguito nuovamente tutto il codice ...
    Questo è il mio FILE HEADER:
    codice:
    struct persona{
        char nome[50];
        char cognome[50];
    };
    typedef struct persona Persona;
    
    struct elemSCL{
        Persona elemento;
        struct elemSCL* next;
    };
    typedef struct elemSCL nodoFilaSCL;
    typedef nodoFilaSCL* filaSCL;
    
    void creaFila(filaSCL* fila,int n);
    
    filaSCL aggiungi(filaSCL fila,Persona p);
    
    void stampa(filaSCL fila);
    
    filaSCL raccomanda(filaSCL fila, Persona p, const int n);
    
    int lunghezza(filaSCL fila);
    FILE-MAIN.C:
    codice:
    int main(){
        filaSCL fila3=NULL;
        creaFila(&fila3,3);
        const int n=2;
        Persona p1={"Giulia","G"};
    raccomanda(fila3,p1,n);
        stampa(fila4);
        printf("\n");
        return 0;
    }
    FILE.C:
    codice:
    void creaFila(filaSCL* fila,int n){
        if(n!=0){
            Persona c;
            filaSCL temp=(nodoFilaSCL*)malloc(sizeof(nodoFilaSCL));
            printf("inserisci nome:");
            scanf("%s",c.nome);
            printf("inserisci cognome:");
            scanf("%s",c.cognome);
            temp->elemento=c;
            temp->next=*fila;
            *fila=temp;
            creaFila(fila,n-1);
        }
    
    filaSCL aggiungi(filaSCL fila,Persona p){
        filaSCL temp=(nodoFilaSCL*)malloc(sizeof(nodoFilaSCL));
        temp->elemento=p;
        temp->next=NULL;
        filaSCL ultimo=fila;
        while(ultimo->next!=NULL){
            ultimo=ultimo->next;
        }
        ultimo->next=temp;
        filaSCL temp1=fila;
        return temp1;
    }
    
    filaSCL raccomanda(filaSCL fila, Persona p, const int n){
        int len=lunghezza(fila);
        if(n>len){
            return aggiungi(fila,p);
        }
        else{
            int num=n;
            filaSCL ultimo=fila;
            while(num!=1){
                ultimo=ultimo->next;
                num--;
            }
            filaSCL temp=(nodoFilaSCL*)malloc(sizeof(nodoFilaSCL));
            filaSCL temp1=ultimo;
            temp->elemento=p;
            temp->next=temp1;
            ultimo=temp;
            filaSCL fila2=fila;
            return fila2;
        }
    }
                
            
    
    int lunghezza(filaSCL fila){
        if(fila!=NULL){
            return 1+lunghezza(fila->next);
        }
        return 0;
    }
    
    void stampa(filaSCL fila){
        if(fila!=NULL){
            printf("%s %s ",fila->elemento.nome,fila->elemento.cognome);
            stampa(fila->next);
        }
    }
    Ultima modifica di ggd94; 06-09-2014 a 11:12

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Il main non è compilabile ... non esiste fila3 e non esiste p1 ... manca anche creaFila ...
    Ultima modifica di oregon; 06-09-2014 a 10:55
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di ggd94
    Registrato dal
    Aug 2014
    residenza
    Rome
    Messaggi
    15
    ho apportato le modifiche al codice lo avevo scritto correttamente ho avuto qualche problema nel riportarlo,scusa ancora comunque non funziona ugualmente ,la creazione della lista avviene quando però vado a stampare fila3 con l'inserimento dell'elemento p1 mi ristampa fila 3 non modificata

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 © 2025 vBulletin Solutions, Inc. All rights reserved.