Mostra notizie nelle discussioni
  • Avatar
    Scritto da
    Non Autenticato
    il 2010-05-05 17:57:00.0 alle 2010-05-05 17:57:00.0
    Qualcuno può aiutarmi con le strutture
    ricorsive? Non riesco proprio a capirle.Mi potete descrivere questo programma? Grazie mille!

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

    struct nodo *crealista();
    void printlista(struct nodo *p);

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

    main()
    {
    struct nodo *start;
    start=crealista();
    printlista(start);
    printf ("\n\n\n");
    system("pause");
    return 0;
    }
    struct nodo *crealista()
    {
    struct nodo *p,*start,*last;
    int i,n,x;
    start=NULL;
    printf ("quanti nodi ha la lista?");
    scanf ("%d",&n);
    printf ("\n\n\ndigitare elementi:");
    for (i=0;i<n;i++)
    {
    scanf ("%d",&x);
    p=(struct nodo *) malloc(sizeof(struct nodo));
             if (i==0)
             start=p;
             else
             last->next=p;
    p->dato=x;
    p->next=NULL;
    last=p;
    }
    return (start);
    }

    void printlista(struct nodo *p)
    {
    printf ("\n\n\n");
    while (p!=NULL)
    {
    printf ("%d --->",p->dato);
    p=p->next;
    }
    printf ("NULL\n");
    return;
    }
    • Avatar
      ☺
      Scritto da
      il 2010-05-05 19:50:00.0 alle 2010-05-05 19:50:00.0
      Trollate totali: 3444
      Re: Qualcuno può aiutarmi con le struttu
      Non vedo ricorsivita` nel listato. Perplesso

      Comunque la ricorsione e` presto spiegata come da dizionario: "se ancora non l'hai capita, vedi voce ricorsione".
      • Avatar
        Scritto da
        Non Autenticato
        il 2010-05-05 19:57:00.0 alle 2010-05-05 19:57:00.0
        Re: Qualcuno può aiutarmi con le struttu

        - Scritto da: alex.tg
        > Non vedo ricorsivita` nel listato. Perplesso
        >
        > Comunque la ricorsione e` presto spiegata come da
        > dizionario: "se ancora non l'hai capita, vedi
        > voce
        > ricorsione".

        Scusa non è la ricorsione,ma una lista concatenata.
        Mi puoi spiegare cosa fa il programma? In modo chiaro per favore.
        Grazie
        • Avatar
          ☺
          Scritto da
          il 2010-05-05 20:06:00.0 alle 2010-05-05 20:06:00.0
          Trollate totali: 3444
          Re: Qualcuno può aiutarmi con le struttu
          "Chiaro" e` un concetto soggettivo, fra l'altro so di non essere granche` bravo a spiegare qualcosa.

          Comunque, definisce una struttura che applica a ogni nodo di una lista concatenata. Ogni nodo ha un puntatore al nodo successivo nella heap del programma. All'inserimento dei dati, ogni elemento viene allocato con malloc, che ritorna un indirizzo sulla heap: il suo valore di ritorno immagazzinato nel puntatore "start" nel corso della prima iterazione del ciclo che richiede i dati (per n==0); nelle iterazioni successive, l'indirizzo dei nodi seguenti viene registrato nel campo "next" dell'ultimo nodo inserito (puntato da "last" che viene assegnato alla fine di ogni iterazione). "p->next" viene inizializzato a "NULL" dopo ogni inserimento, in modo che l'ultimo nodo inserito non abbia un successivo (infatti, il ciclo in "printlista" procede mentre "p->next" non e` nullo).

          Um... spero sia comprensibile, anche perche` devo andare a cena...
          • Avatar
            Scritto da
            Non Autenticato
            il 2010-05-05 20:10:00.0 alle 2010-05-05 20:10:00.0
            Re: Qualcuno può aiutarmi con le struttu

            - Scritto da: alex.tg
            > "Chiaro" e` un concetto soggettivo, fra l'altro
            > so di non essere granche` bravo a spiegare
            > qualcosa.
            >
            > Comunque, definisce una struttura che applica a
            > ogni nodo di una lista concatenata. Ogni nodo ha
            > un puntatore al nodo successivo nella heap del
            > programma. All'inserimento dei dati, ogni
            > elemento viene allocato con malloc, che ritorna
            > un indirizzo sulla heap: il suo valore di ritorno
            > immagazzinato nel puntatore "start" nel corso
            > della prima iterazione del ciclo che richiede i
            > dati (per n==0); nelle iterazioni successive,
            > l'indirizzo dei nodi seguenti viene registrato
            > nel campo "next" dell'ultimo nodo inserito
            > (puntato da "last" che viene assegnato alla fine
            > di ogni iterazione). "p->next" viene
            > inizializzato a "NULL" dopo ogni inserimento, in
            > modo che l'ultimo nodo inserito non abbia un
            > successivo (infatti, il ciclo in "printlista"
            > procede mentre "p->next" non e`
            > nullo).
            >
            > Um... spero sia comprensibile, anche perche` devo
            > andare a
            > cena...

            A me sembra di aver capito che in "last->next=p"
            in pratica si crea un nuovo nodo,giusto?
            e last=p finale crea un altro nuovo nodo,giusto?
            • Avatar
              Scritto da
              Non Autenticato
              il 2010-05-05 20:32:00.0 alle 2010-05-05 20:32:00.0
              Re: Qualcuno può aiutarmi con le struttu

              - Scritto da:
              >
              > - Scritto da: alex.tg
              > > "Chiaro" e` un concetto soggettivo, fra l'altro
              > > so di non essere granche` bravo a spiegare
              > > qualcosa.
              > >
              > > Comunque, definisce una struttura che applica a
              > > ogni nodo di una lista concatenata. Ogni nodo ha
              > > un puntatore al nodo successivo nella heap del
              > > programma. All'inserimento dei dati, ogni
              > > elemento viene allocato con malloc, che ritorna
              > > un indirizzo sulla heap: il suo valore di
              > ritorno
              > > immagazzinato nel puntatore "start" nel corso
              > > della prima iterazione del ciclo che richiede i
              > > dati (per n==0); nelle iterazioni successive,
              > > l'indirizzo dei nodi seguenti viene registrato
              > > nel campo "next" dell'ultimo nodo inserito
              > > (puntato da "last" che viene assegnato alla fine
              > > di ogni iterazione). "p->next" viene
              > > inizializzato a "NULL" dopo ogni inserimento, in
              > > modo che l'ultimo nodo inserito non abbia un
              > > successivo (infatti, il ciclo in "printlista"
              > > procede mentre "p->next" non e`
              > > nullo).
              > >
              > > Um... spero sia comprensibile, anche perche`
              > devo
              > > andare a
              > > cena...
              >
              > A me sembra di aver capito che in "last->next=p"
              > in pratica si crea un nuovo nodo,giusto?
              > e last=p finale crea un altro nuovo nodo,giusto?

              Ah no mi sono sbagliato! Grazie Alex.tg,ho capito finalmente come funzionano queste benedette liste! GRAZIEEEEE!
<softv>

Pagina generata in 50 millisecondi

Utenti attivi: 11 nell'ultimo minuto, 29 negli ultimi cinque minuti, 45 negli ultimi 15 minuti