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

    [C] - liste...

    ciao a tutti, vi chiedo aiuto perchè sono ai primi esempi di liste concatenante e trovo errori che non riesco a risolvere.
    più che la lista in sè il problema è che non riesco a compilare ed eseguire correttamente questi script. entrambi creano ed inizializzano una lista concatenata semplice, soltanto che il secondo lo fa effettuando una chiamata di funzione con la lista passata per puntatore.

    primo script: crea una lista di 10 elementi inizializzandoli con un ciclo for, la struttura dati si chiama node; la compilazione va a buon fine, ma si blocca l'esecuzione (errore di windows)

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

    struct node {
    int dato;
    struct node *next;
    };

    main () {

    struct node *curr, *head;
    int i;
    head = NULL;
    for(i=1;i<10;i++) {
    head=malloc(sizeof(struct node));
    curr->dato=(i*2);
    curr->next=head;
    head=curr;
    }

    curr=head;
    i=1;
    while(curr) {
    printf("componente numero %d, dato: %d",i,curr->dato);
    printf("\n\n");
    i++;
    curr=curr->next;
    }

    system("PAUSE");

    }


    secondo script: stessa cosa con chiamata di funzione e passaggio per puntatore. non riesco a compilarlo.

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

    void lista_aggiungi (node **p, int i) {
    node *n = malloc(sizeof(node));
    n->dato=i;
    n->next=*p;
    *p=n;
    return;
    }

    struct node {
    int dato;
    struct node *next;
    }

    main() {

    node *n = NULL;
    lista_aggiungi(&n,45); // dato 0
    lista_aggiungi(&n,50); // dato 1
    lista_aggiungi(&n,60); // dato 2
    /*
    do {
    printf("dato %d/n", n->dato);
    n=n->next;
    }
    while(next);
    system("PAUSE");*/
    }


    PS: uso DevC++

  2. #2

    Re: [C] - liste...

    Nel primo:
    Codice PHP:
    curr->dato=(i*2); 
    curr non ha un valore definito. Quindi il comportamento del programma è giustamente indefinito.

    Nel secondo non è definito il tipo "nodo".

  3. #3
    grazie mille per l'aiuto!

    come sistemo il primo? basta inizializzare il puntatore curr e farlo puntare alla struttura dati tramite il puntatore head oppure serve altro?

    per quanto riguarda il secondo però l'avevo già corretto, il tipo era "node" solo che nella stesura mi sono confuso e l'ho chiamato in italiano (come in un altro esempio). comunque l'avevo già corretto, ed il compilatore non andava lo stesso.
    (ora edito)

  4. #4
    Originariamente inviato da btb84
    per quanto riguarda il secondo però l'avevo già corretto, il tipo era "node" solo che nella stesura mi sono confuso e l'ho chiamato in italiano (come in un altro esempio). comunque l'avevo già corretto, ed il compilatore non andava lo stesso.
    (ora edito)
    Malissimo, quindi io adesso dovrei editare la mia risposta, eliminando la mia constatazione sull'inesistenza del tipo nodo?

  5. #5
    guarda che lo facevo per evitare che altri mi segnalassero lo stesso errore...
    se vuoi lo ri-edito sbagliato, ma non mi sembra una cosa molto sensata...

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.