|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Visita per livelli
Ciao a tutti!
Non ho capito bene a che serve usare una coda per effettuare la visita di un albero generale per livelli. Ad esempio in questo piccolo pezzo di codice è implementata la visita per livelli (non so se è esatta): Codice:
void visita (gtree t){ coda q; gtree aux,tmp; init(q); if (!t) enqueue(q,t); while(!empty(q)){ aux = dequeue(q); printf("%d",aux->dato); tmp = aux->lista_fratelli while(!aux){ enqueue(q,aux); aux = aux->lista_fratelli; } if (!(aux->primo_figlio)) enqueue(q,aux->primo_figlio); } } Ultima modifica di Manugal : 11-06-2006 alle 21:30. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
up
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
senti abbi pazienza ma se non scrivi il testo di tutte quelle funzioni come si fa a immaginarsi che cosa fanno?
![]() se sono troppo lunghe metti un allegato scaricabile con tutto. se no scrivi direttamente la definizione delle strutture dati E delle funzioni . dopo ripasso. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Beh, in effetti il codice non e' per niente chiaro:
- viene valorizzata una variabile tmp che non viene usata e non si sa a cosa serva; - L'istruzione if (!t) enqueue(q,t); mette un NULL nella cosa, salvo poi, con l'istruzione aux = dequeue(q); printf("%d",aux->dato); estrarlo subito e dereferenziarlo. Questo dovrebbe provocare un crash, a meno che ci siano delle parti di programma non specificate che aggiustino le cose... prova a pubblicare qualcosa di piu' e magari qualche info di cui sei a conoscenza. High Flying Sottovento
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
C'era solo scritto questo: "Si trattava di usare una coda per mantenere traccia del livello dei nodi. La coda poteva essere definita con un dato di tipo gtree. Assumiamo quindi un tipo coda e assumiamo date tutte le routine standard su coda." La struttura dell'albero era una cosa del genere, credo almeno. Non ricordo bene perché quel codice l'ho copiato dalle soluzioni di un esame e il testo del problema non era scritto.
Codice:
struct gtree{ int dato; struct gtree *primofiglio; struct node *listafratelli; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:24.