Pages: 1 [2]   Go Down
Print
Author Topic: Testo - prova di simulazione  (Read 3716 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« Reply #15 on: 18-06-2012, 17:25:18 »

quoto quello che ha detto Il Capitano ! Come lo hai implementato e soprattutto il testo dice
Code:
Restituisca della lista ordinata in maniera crescente, secondo l'ordinamento delle etichette dell'albero.
e quindi se la lista deve essere ordinata in base all'etichetta dell'albero a che cosa potrà servire il livello ?

Grazie !
Logged
Ocelot92
Apprendista Forumista
**
Offline Offline

Posts: 301



« Reply #16 on: 18-06-2012, 17:44:17 »

Code:
public void metodo (BSTnode n, Lista L, int C){
if(n==null) return;
metodo (n.left, L, C+1);
L.InsTail(n.info, C);
metodo (n.right, L, C+1);
}

Il C lo uso per contare a che livello sono.

Grazie!

EDIT: Ma a questo punto servirebbe un nuovo metodo(esterno) InsTail che prende un intero oltre alla chiave...come lo hai implementato?
Grazie.

Non era richiesta l'implementazione di quel metodo. Poi l'avresti implementato a casa. Puoi decidere come vuoi come salvari i dati nella lista. Sia che usi 2 nodi (della lista) per etichetta e livello oppure un solo nodo dove la "parte info" è fatta con un array di 2 dimensioni.
Logged

I'm happy to tell you all that...
((λf.λx.f(f(x))) (λy.y^2)) (5)  = 5^4

"Si ma dillo che bisogna cliccare APPLY per crearle le partizioni…" - cit. Utente dopo aver seguito un How-To... .-.
Il Capitano
Apprendista Forumista
**
Offline Offline

Posts: 409


« Reply #17 on: 18-06-2012, 18:03:38 »

Si lo so, mi interessava proprio sapere come avevi implementato a casa questo nuovo metodo di inserimento in coda con l'intero c.
Cioè io ho implementato il classico:

Code:
public void insertTail(int val){
if(isEmpty()){
head=new Nodo(val);
}
else{
Nodo aux=head;
for(;aux.getNext()!=null;aux=aux.getNext());
aux.setNext(new Nodo(val));
}
}

Con questa modifica quindi avrei:

Code:
public void insertTail(int val,int c){
if(isEmpty()){
head=new Nodo(val,c);
}
else{
Nodo aux=head;
for(;aux.getNext()!=null;aux=aux.getNext());
aux.setNext(new Nodo(val,c));
}
}

è corretto?



Logged
Ocelot92
Apprendista Forumista
**
Offline Offline

Posts: 301



« Reply #18 on: 18-06-2012, 19:14:48 »

Hai una lista con etichetta e livello no? Quindi sì, considerando che non c'erano limitazioni su questa operazione nella consegna, è corretto  ok
Logged

I'm happy to tell you all that...
((λf.λx.f(f(x))) (λy.y^2)) (5)  = 5^4

"Si ma dillo che bisogna cliccare APPLY per crearle le partizioni…" - cit. Utente dopo aver seguito un How-To... .-.
Il Capitano
Apprendista Forumista
**
Offline Offline

Posts: 409


« Reply #19 on: 18-06-2012, 19:19:39 »

Hai una lista con etichetta e livello no? Quindi sì, considerando che non c'erano limitazioni su questa operazione nella consegna, è corretto  ok
Benissimo grazie 
Logged
Nessuno
Apprendista Forumista
**
Offline Offline

Posts: 204



« Reply #20 on: 19-06-2012, 09:03:50 »

Code:
public void metodo (BSTnode n, Lista L, int C){
if(n==null) return;
metodo (n.left, L, C+1);
L.InsTail(n.info, C);
metodo (n.right, L, C+1);
}

Il C lo uso per contare a che livello sono.

..c'è forse un problema ma non ne sono sicuro..può esser che sbaglio.
Quando siamo nel caso in cui inseriamo un figlio destro in lista ( pari praticamente alla corrispondente visita su quel nodo) e  considerando che il fratello dx. è di pari livello rispetto al nodo sinistro..il contatore viene incrementato..in questo modo il primo figlio sinistro ha un livello "n" ed il suo fratello destro un livello n+1...non so se sono stato chiaro.
Logged

Sorridi anche se il tuo sorriso è triste, perchè più triste di un sorriso triste c'è la tristezza di non saper sorridere.

::Jim Morrison::
Ocelot92
Apprendista Forumista
**
Offline Offline

Posts: 301



« Reply #21 on: 19-06-2012, 13:38:22 »

Non ho ben capito. Cmq il contatore partirebbe dal padre che ha sempre lo stesso valore, ex 2. Quando si farà la chiamata al figlio sx avrà 3. Quando si farà la chiamata al figlio destro (che parte sempre dal padre) avrà 3 cmq. Se hai qualche dubbio prova il codice cosi ti convinci meglio.

"Ciò che si apprende da soli è più prezioso di ciò che veniamo a sapere"...
Logged

I'm happy to tell you all that...
((λf.λx.f(f(x))) (λy.y^2)) (5)  = 5^4

"Si ma dillo che bisogna cliccare APPLY per crearle le partizioni…" - cit. Utente dopo aver seguito un How-To... .-.
Nessuno
Apprendista Forumista
**
Offline Offline

Posts: 204



« Reply #22 on: 19-06-2012, 14:43:31 »

OK, si il contatore parte sempre dal valore del padre...Grazie.
Logged

Sorridi anche se il tuo sorriso è triste, perchè più triste di un sorriso triste c'è la tristezza di non saper sorridere.

::Jim Morrison::
Pages: 1 [2]   Go Up
Print
Jump to: