Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] liste

  1. #1
    Utente bannato
    Registrato dal
    Jan 2004
    Messaggi
    22

    [C] liste


    salve, ho appena finito un esame di C che non è
    andato proprio bene...anche perchè
    bho c'era un esercizio che proprio
    non riuscivo a concettualizzare...
    uuf!! non è che potete darmi
    una mano voi? grazie infinite!


    ESERCIZIO:
    ----------
    codice:
    Siano date le seguenti definizioni che implementano una lista di interi.
    
    typedef struct nodo *lista;
    struct nodo{
                 int x;
                 lista next;
               };
    scrivere una funzione ricorsiva   lista torali_parziali(lista L);
    
    che,presa in ingresso la lista L,generi e ritorni una 
    lista di pari lunghezza,contenente in 
    ogni posizione i-esima la somma degli elementi 
    di L dall'i-esimo all'ultimo. Se ad esempio la lista 
    è L=(1,2,3,4,5), la funzione deve ritornare 
    la lista (15,14,12,9,5).
    Se L è una lista vuota, la funzione ritorna 
    una lista vuota.
    Definire anche le opportune funzioni allocanodo() 
    e inserisci() se necessarie.
    (Suggerimento: se totali_parziali chiamata 
    ricorsivamente sul successore di un nodo L restituisce 
    una lista Res quale sarà il primo elemento 
    della lista calcolata da totali_parziali su L?)

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    117
    Ecco il listato:

    /* Crea un lista che in ogni posizione i ha
    * la somma di tutti gli elementi della lista
    * passata come parametro dalla posizione i all'ultima
    */
    lista totali_parziali(lista l)
    {
    if (l != NULL)
    {
    // Intero per la memorizzazione della somma
    int k = 0;
    // Puntatore d'appoggio per lo scorrimento di l per sommare gli elementi
    lista p = l;
    // Lista da ritornare
    lista l2;

    // Scorrimento di l per sommare gli elementi
    while (p != NULL)
    {
    k += p->x;
    p = p->next;
    }

    // Assegnamento di l2
    l2 = (lista)malloc(sizeof(struct nodo));
    l2->x = k;
    l2->next = totali_parziali(l->next); // Ricorsione
    return l2;
    }
    else
    // Fine lista l segna la fine anche di l2
    return NULL;
    }

    Se ti serve una cosa con una complessità minore ti conviene seguire il suggerimento dato. Se ti serve ancora una mano fammi sapere!

  3. #3
    Utente bannato
    Registrato dal
    Jan 2004
    Messaggi
    22

    thanx

    grazie infinite, l'idea era kome quella ke mi frullava, ma non riuscivo proprio a buttarla giu.. a buon rendere:P

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.