Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    7

    [C] Costruire un albero con liste dei figli - AIUTO!!!

    Un saluto a tutti! Vi chiedo un piccolo aiuto o un consiglio o un suggerimento per un esercizio. O meglio questo è una piccola parte; il grosso l' ho finito. Ma per quanto riguarda gli alberi sono abbastanza negato. Sì, devo studiarli meglio in effetti... Comunque sia, il riassunto è questo:

    Ho un certo numero di mosse da fare(una mossa è una coordinata (x;y)), e devo mettere tutte le mie coordinate su un albero in modo da avere:

    -) se faccio la prima mossa "a" ho:

    a

    -) poi se faccio una mossa "b" ho:

    a
    |
    b

    -) poi se faccio una mossa "c" ho:

    a
    |
    b
    |
    c

    E fin qui tutto ok (mi basta fare una coda, che ho già fatto).
    Il problema sta nel fatto che una mossa posso eliminarla MA non la devo cancellare dall' albero. Una volta eliminata una mossa, devo tornare al nodo precedente non eliminato! Spiegandomi meglio. Tornando all' esempio di prima.

    -)Se elimino la mossa "c" e poi faccio una mossa "d" devo avere:

    a
    |
    b
    / \
    c d

    -) Poi facendo una mossa "e":
    ("e" è un figlio di "d", eh. Non di "c")

    a
    |
    b
    / \
    c d
    /
    e

    -) Poi se elimino sia "e" che "d". E faccio in seguito una mossa "f":
    (cioè "f" è un figlio di "b")

    a
    |
    b
    / | \
    c d f
    /
    e


    E così via...

    Sapreste darmi una mano? Avete qualche idea? Vi ringrazio per l' attenzione
    Ciao!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    7
    Mi sa che butto la coda e passo ad una lista come base. Sto guardando un esempio di albero con liste... (Sebbene al momento sia in balìa di mari più che burrascosi(in senso metaforico ^__^ )). La vedo dura! :rollo:

  3. #3
    Considerando il fatto che un elemento dell'albero può avere solo un elemento genitore e uno o più elementi figli ne consegue la seguente struttura arborea :
    codice:
    struct tree_node
    {
     struct tree_node *parent;  /* punta all'elemento genitore */
     struct tree_node *child;   /* punta al primo elemento figlio */
     struct tree_node *brother; /* punta all'elemento fratello */
     char *name;                /* nome del nodo */
    };
    il tuo problema si riduce ad implementare un paio di funzioni ad es . MakeMove() e DeleteMove() che eseguono rispettivamente la mossa (aggiunge un nuovo nodo) e ritornano al nodo genitore (si posiziona sul nodo genitore).

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    7
    Grazie mille King64 della risposta, vedo un po' cosa mi salta fuori. ;-)
    Anche se non mi è chiaro bene ancora come fare nel caso eliminassi tutte le mosse(ad eccezione della radice, che non deve essere eliminata).

  5. #5
    In questo caso dovrai includere un controllo di consistenza nella funzione DeleteMove() che si incaricherà di ispezionare il nodo genitore . Se il valore ammesso è legale (nodo genitore non nullo) allora effettuerà l'operazione , altrimenti segnalerà un'operazione illegale ritornando un codice di errore .

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.