Visualizzazione dei risultati da 1 a 5 su 5

Discussione: liste concatenate in c

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    4

    liste concatenate in c

    AIUTO!!!sono uno studente di informatica...
    ho un problema con le liste... il programma qui sotto non funziona... non ha errori di compilazione ma all'avvio mi da errori di violazione accesso in memoria.... vi prego aiutatemi!!!!
    cosa c'è che non va?


    #include <stdio.h>
    #include <stdlib.h>
    #define A 10


    typedef struct Lista{
    int valore;
    char stringa[A];
    struct Lista *coda;
    }lista;


    stampa(lista *p);
    lista crea_nuovo();


    stampa(lista *p){
    do {
    printf("\nIl valore introdotto :%d",p->valore);
    printf("\nLa stringa :%s",p->stringa);
    p=p->coda;

    }while(p->coda!=NULL);
    return 0;
    }


    Lista crea_nuovo(){

    Lista *p;
    p=(Lista*) malloc(sizeof(Lista));
    printf("Inserisci un valore intero:\n");
    scanf("%d", &p->valore);
    printf("Inserisci la stringa:\n");
    scanf("%s", &p->stringa);
    p->coda=NULL;
    return (*p);
    }


    int main(){
    int scelta;
    Lista *inizio,*p;
    inizio=p=(Lista*) malloc(sizeof(Lista));
    do{
    printf(" menu \n");
    printf("\n1...........inserisci");
    printf("\n2...........stampa");
    printf("\n3...........inserisci un altro");
    printf("\n4...........esci\n");
    scanf("%d",&scelta);

    switch(scelta){
    case 1:{if(inizio){printf("Inizializziamo la Lista:\n");
    printf("Inserisci un valore intero:\n");
    scanf("%d", &inizio->valore);
    printf("Inserisci la stringa:\n");
    scanf("%s", &inizio->stringa);
    inizio->coda=NULL;
    continue;}
    else printf("errore");}


    case 2:{stampa(inizio);
    break;};


    case 3:{*p->coda=crea_nuovo();
    continue;};


    case 4:exit(1);
    }


    }while(scelta);


    return 0;
    }

  2. #2
    dai un occhio alla funzione crea_nuovo,
    mi pare che l´elemento precedente della lista non abbia riferimento all´elemento nuovo...
    non dovresti fare
    p->coda=(*lista)malloc...?

    ciao
    raga, non ne so assolutamente nulla!

  3. #3
    ho detto una vaccata... scusatemi....:quote: :quote: :quote:
    raga, non ne so assolutamente nulla!

  4. #4
    piano piano ne esco...

    inizio=p=(Lista*) malloc(sizeof(Lista));

    dovrebbe essere questa la riga incriminata...

    *inizio
    *p

    prova e spera...
    raga, non ne so assolutamente nulla!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    4
    l'errore era nella funzione main... ecco la soluzione:
    comunque grazie lo stesso..}


    case 1:if(inizio==NULL){
    printf ("Inizializziamo la Lista:\n");
    inizio = p = crea_nuovo();}

    else
    {p->coda = crea_nuovo();
    p = p->coda;

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.