Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Con un prezzo di 2.999 euro, il Panasonic Z95BEG entra nella fascia ultra-premium dei TV OLED: pannello Primary RGB Tandem, sistema di raffreddamento ThermalFlow, audio Technics integrato e funzioni gaming avanzate lo pongono come un punto di riferimento
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
Abbiamo provato per diverse settimane il nuovo Magic V5 di HONOR, uno smartphone pieghevole che ci ha davvero stupito. Il device è il più sottile (solo 4.1mm) ma non gli manca praticamente nulla. Potenza garantita dallo Snapdragon 8 Elite, fotocamere di ottima qualità e batteria in silicio-carbonio che garantisce un'ottima autonomia. E il Prezzo? Vi diciamo tutto nella nostra recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-02-2003, 19:20   #1
SalvoX
Senior Member
 
L'Avatar di SalvoX
 
Iscritto dal: Aug 1999
Città: Milano
Messaggi: 606
Alberi Liste e complessità

Salve ragazzi
all'univ per un esame dovevo fare questo programma
Definire una classe Java TreeList per una lista linkata semplice in modo che i singoli nodi possano contenere radici di alberi binari.
Scrivere un metodo Java per la classe TreeList che ordini la lista conl'algoritmo dell'Insertion Sort in base alle altezze degli alberi.



che ho così implementato
class Treenodo
{
IntBSTNode info;//contiene le root degli alberi binari
Treenodo next;//contiene il successivo nodo

public Treenodo(IntBSTNode a)
{
this(a,null);
}

public Treenodo(IntBSTNode a, Treenodo n)
{info=a; next=n;}

class Treelist//---------------------------------------------
{
Treenodo head,tail;

public Treelist()
{head=tail=null;}

public Treenodo index(int index)//torna il nodo index 0=head ,1=head.next...
{
Treenodo tmp=head;
for(int i=0; i<index; tmp=tmp.next,i++);
return tmp;
}

public int length()//torna il numero di nodi della lista
{ int cont=0;
Treenodo tmp=head;
while(tmp!=null)
{ cont++;
tmp=tmp.next;
}
return cont;
}

public int altezza(IntBSTNode p)//altezza rispetto al nodo
{
if (p==null) {return -1;}//non esiste
int s=(p.left==null ? -1 : altezza(p.left));//parte sinistra
int d=(p.right==null ? -1 : altezza(p.right));//parte destra
return 1+(s<d ? d : s);//somma a 1 la parte più alta
}//un nodo h=0 ,due nodi h=1
//Dato che ogni nodo della Treelist contiene una radice calcolando l'altezza del nodo si
//calcola l'altezza dello stesso albero

public int hnodo(int i)//torna l'altezza del BST la cui radice sta al nodo i della Treelist
{return altezza(index(i).info);}

public void ListSort()//ordina la lista attiva
{ int i,j,tmp;
IntBSTNode tmp2;

for(i=1; i<length();i++)
{ tmp=hnodo(i);//tengo l'altezza del nodo con indice i
tmp2=index(i).info;//tengo anche il suo campo info

for(j=i; j>0 && tmp<hnodo(j-1); j--)//comparo le altezze

index(j).info=index(j-1).info;//cambio i campi info

index(j).info=tmp2;
}
}//ListSort

Tuttavia come potete vedere la complessità è molto alta(dovrebbe essere O(n^3 )anche se vorrei essere sicuro
magari voi sapete dirmi dove trovare informazioni/link sulla rete su come calcolarla )

Mi è venuta qualche idea su come diminuirla (esempio mettere un array di oggetti che tenga gli indirizzi di mem in modo da non chiamare sempre il metodo index) ma gradirei tanto il vostro aiuto
Tenete presente che prima della call ListSort e dopo gli indirizzi di mem non devono cambiare(solo i riferimenti)


datemi una mano
grazie anticipate
SalvoX è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2003, 01:34   #2
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Gli alberi binari nella lista come devono essere costruiti? Cioè, devi considerarli già nella lista o devi fornire anche dei metodi per costruire gli alberi??
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2003, 21:27   #3
SalvoX
Senior Member
 
L'Avatar di SalvoX
 
Iscritto dal: Aug 1999
Città: Milano
Messaggi: 606
no devono essere già nella lista quindi non si deve badare alla loro costruzione (se non nel main ma solo come test)

Qualche link su come documentarmi su puntatori e oggetti in java?
SalvoX è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2003, 23:53   #4
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "SalvoX"

no devono essere già nella lista quindi non si deve badare alla loro costruzione (se non nel main ma solo come test)

Qualche link su come documentarmi su puntatori e oggetti in java?
Ti ho chiesto questo perchè allora potresti fare delle assunzioni su come gli alberi sono stati costruiti. Supponiamo che mantieni un campo nella radice che si incrementa ad ogni nodo inserito nell'albero, e si decrementa per ogni nodo cancellato. Ottieni un campo che ti dice quanti nodi ha un albero. Così, aumentando l'inserimento e la cancellazione di un fattore costante, puoi continuare ad effettuare una insertion sort sulla lista mantenendo complessità asintotica O(n^2).

Per Java ti consiglio Thinking in Java, Bruce Eckel, Apogeo Editore. Questo libro, seppur pubblicato da Apogeo, è stato pubblicato sotto OPL, quindi dovrebbe essere liberamente distribuibile in rete. Ne trovai una copia in rete in formato PDF. Se aspetti un attimo ti faccio pure una ricerca.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2003, 23:59   #5
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "SalvoX"

no devono essere già nella lista quindi non si deve badare alla loro costruzione (se non nel main ma solo come test)

Qualche link su come documentarmi su puntatori e oggetti in java?
Ecco quà. Qui ci sono i mirror per scaricare il libro:

http://www.mindview.net/Books/TIJ/

E' uno dei migliori testi per quanto riguarda Java. Highly recommended. Inoltre ha il vantaggio che oltre a essere ottimo, è anche in PDF, così non ti cechi a leggere (magari stampalo o acquistalo, questo è uno di quei testi che un giorno non userai per accendere camini)
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2003, 08:29   #6
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Una soluzione un po' spartana ma efficace e' quella di aggiungre uncampo "height" ai nodi della lista (non degli alberi !). Visto che non ti e' chiesto di aggiungre/togliere/modificare gli alberi, puoi trovarti tutte le altezze con un primo passaggio ( O(n) sul numer complessivo di nodi ) e infine esegui un normale insertion sort (o qualsiasi altro) utilizzando le altezze precalcolate.

Marco

P.S. : un'altra volta cerca di utilizzare i tag [ code ] per il cdice !
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2003, 17:35   #7
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "/\/\@®¢Ø"

Una soluzione un po' spartana ma efficace e' quella di aggiungre uncampo "height" ai nodi della lista (non degli alberi !). Visto che non ti e' chiesto di aggiungre/togliere/modificare gli alberi, puoi trovarti tutte le altezze con un primo passaggio ( O(n) sul numer complessivo di nodi ) e infine esegui un normale insertion sort (o qualsiasi altro) utilizzando le altezze precalcolate.

Marco

P.S. : un'altra volta cerca di utilizzare i tag [ code ] per il cdice !
Ma con insertion sort non serve fare una scansione preliminare della lista. Ha un tempo asintotico di O(n^2) appunto perchè l'algoritmo scandisce direttamente la lista alla ricerca del nodo + piccolo/+ grande ad ogni passaggio per poi "inserirlo" nella posizione corretta.
Inoltre la tua soluzione non aggiunge nulla alla mia, il risultato è praticamente lo stesso, visto che sapere il numero di nodi sia nella tua soluzione che nella mia consiste al più in una dereferenziazione di un puntatore. Solo che il numero di nodi, se sono di un albero, non ha senso metterli nel nodo di una lista!
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2003, 17:49   #8
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
La scansione preliminare mi serve per calcolarmi le altezze all'inizio per non dovere ricalocarmi le altezze degli alberi gia' inseriti dopo, tutto li'
Comunque hai ragione che sostanzialmente la soluzione mia e tua non sono differenti. Pero' faccio un paio di osservazioni: non e' bella cosa aggiungere un campo ad ogni nodo quando le informazioni ti servono solo per la radice. Inoltre non e' detto che tu abbia la possibilita' di modificare il codice degli alberi.
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2003, 23:17   #9
SalvoX
Senior Member
 
L'Avatar di SalvoX
 
Iscritto dal: Aug 1999
Città: Milano
Messaggi: 606
Allora ragazzi ho modificato un po il codice ecco il fulcro

Codice:
class Treenodo
{
	IntBSTNode info;//contiene le root degli alberi binari
	Treenodo next;//contiene il successivo nodo
	int h;//contiene l'altezza del relativo albero

public Treenodo(IntBSTNode a)
{
	this(a,null);
}

public Treenodo(IntBSTNode a, Treenodo n)
{info=a; next=n; h=IntBST.altezza(a);}

public IntBSTNode visit()
{return info;}

}//class Treenodo

class Treelist//---------------------------------------------
{
	Treenodo head,tail;
	Treenodo[] index;//Array di obj treenodo dove tengo gli ind i mem
	int ind=0;//indice per sapere totale treenodi

public Treelist()
{head=tail=null;index=new Treenodo[10];}

public boolean isEmpty()
{return head==null;}


public void ListSort()//ordina la lista attiva
{ int i,j,tmp;
  IntBSTNode tmp2;

	for(i=1; i<ind;i++)
		{ tmp=index[i].h;//tengo l'altezza del nodo con indice i
		  tmp2=index[i].info;//tengo anche il suo campo info

		  for(j=i; j>0 && tmp<index[j-1].h; j--)//comparo le altezze

		  		index[j].info=index[j-1].info;//cambio i campi info

		  index[j].info=tmp2;
		}
}//ListSort

//-----------------------------------------------------------------------------
public void printAll()//stampa tutte le radici
	{
		System.out.println("\n lista=");
		for(Treenodo tmp=head; tmp !=null; tmp=tmp.next)
		System.out.println("rad"+tmp.info.key + " ");
	}

public void printH()//stampa tutte le altezze
	{
		System.out.println("\n lista=");
		for(Treenodo tmp=head; tmp !=null; tmp=tmp.next)
		System.out.println("H="+tmp.h + " ");
	}



public void addToTail(IntBSTNode el)//aggiunge in coda
	{
		if(!isEmpty())//se la lista non è vuota
		 {tail.next=index[ind++]=new Treenodo(el);//nuovo obj
		  tail=tail.next;}//fa puntare il vecchio tail al nuovo obj
		else
			head=tail=index[ind++]=new Treenodo(el);//se la lista è vuota
	}



}//class Treelist
Quindi in ogni nodo ho messo h in modo da averla già pronta e non doverla calcolare ogni volta (notate che altezza è un metodo static di IntBST quindi si può richiamare da fuori senza obj attivo)

In TreeList ho pensato di mettere Treenodo[] index dove tengo i puntatori ad ogni singolo oggetto ma potendo accedere attraverso index[i]
inoltre ho aggiunto
int ind=0;//indice per sapere totale treenodi che evita il metodo length

La complessità cosi scende di molto ma adesso il prog non funza +
Il problema sta in ListSort e dipende dal modo in cui java usa i puntatori credo...in pratica non agisco sulla lista ma solo sull'array

Avete qualche idea ? mi serve davvero il vostro aiuto ragazzi se no non continuavo a rompere

Il problema di base è accedere ai nodi della lista in modo diretto(come su un array appunto) senza scandire (e quindi COMPLEXare il prog) tutta la lista

Sono nelle vostre mani
il codice allegato è quello nuovo
Se non potete farmi il metodo mi spieghereste (magari graficamente) cosa avviene nella mem con sti puntatori java?

Tnx sempre e comunque
ciao
SalvoX è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2003, 17:36   #10
SalvoX
Senior Member
 
L'Avatar di SalvoX
 
Iscritto dal: Aug 1999
Città: Milano
Messaggi: 606
ragazzi nel frattempo che ci siamo potreste consigliarmi un Debugger visuale facile per java?
ho usato jdb ma non è il massimo essendo da console..potrebbe essermi d'aiuto

molte grazie
SalvoX è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2003, 17:55   #11
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "SalvoX"

ragazzi nel frattempo che ci siamo potreste consigliarmi un Debugger visuale facile per java?
ho usato jdb ma non è il massimo essendo da console..potrebbe essermi d'aiuto

molte grazie
Tanto anche i debugger visuali per essere usati ad un buon livello richiedono l'immissione dei comandi dell'inferior debugger, tanto vale impratichirti col JDB. Tanto che differenza fa vedere l'output a console o in una finestra? Io + che altro direi che JDB fa schifo proprio come debugger, almeno fino a quando non vedi GDB. Purtroppo il supporto a Java di GDB è ancora arrangiato e sperimentale. Quindi, a parte i debugger integrati negli ambienti di sviluppo, non so cosa consigliarti.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2003, 17:58   #12
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "/\/\@®¢Ø"

La scansione preliminare mi serve per calcolarmi le altezze all'inizio per non dovere ricalocarmi le altezze degli alberi gia' inseriti dopo, tutto li'
Non avevo capito. Io ho detto ciò perchè i docenti di Algoritmi e Strutture di Dati sono i + pignoli del mondo e trovano una minima scusa per dire "torna la prossima volta"
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2003, 18:20   #13
SalvoX
Senior Member
 
L'Avatar di SalvoX
 
Iscritto dal: Aug 1999
Città: Milano
Messaggi: 606
ehehe è proprio vero
SalvoX è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2003, 17:29   #14
SalvoX
Senior Member
 
L'Avatar di SalvoX
 
Iscritto dal: Aug 1999
Città: Milano
Messaggi: 606
we ragazzi ho trovato un debugger davvero fantastico per java
http://www.karmira.com/ trovate bugseeker (versione evaluation 30 giorni ma vi dovete lasciare la mail per avere il codice
di 30 giorni)
tutto visuale permette di fare debug davvero precisi tramite print delle var/stack/ ecc ecc
Se qualcuno riesce a "ranarlo" mi mandi un pvt
ciao
SalvoX è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2003, 20:44   #15
M86
Senior Member
 
L'Avatar di M86
 
Iscritto dal: Jan 2002
Messaggi: 2870
Re: Alberi Liste e complessità

Quote:
Originally posted by "SalvoX"

Salve ragazzi
all'univ per un esame dovevo fare questo programma
Definire una classe Java TreeList per una lista linkata semplice in modo che i singoli nodi possano contenere radici di alberi binari.
Scrivere un metodo Java per la classe TreeList che ordini la lista conl'algoritmo dell'Insertion Sort in base alle altezze degli alberi.



che ho così implementato
class Treenodo
{
IntBSTNode info;//contiene le root degli alberi binari
Treenodo next;//contiene il successivo nodo

public Treenodo(IntBSTNode a)
{
this(a,null);
}

public Treenodo(IntBSTNode a, Treenodo n)
{info=a; next=n;}

class Treelist//---------------------------------------------
{
Treenodo head,tail;

public Treelist()
{head=tail=null;}

public Treenodo index(int index)//torna il nodo index 0=head ,1=head.next...
{
Treenodo tmp=head;
for(int i=0; i<index; tmp=tmp.next,i++);
return tmp;
}

public int length()//torna il numero di nodi della lista
{ int cont=0;
Treenodo tmp=head;
while(tmp!=null)
{ cont++;
tmp=tmp.next;
}
return cont;
}

public int altezza(IntBSTNode p)//altezza rispetto al nodo
{
if (p==null) {return -1;}//non esiste
int s=(p.left==null ? -1 : altezza(p.left));//parte sinistra
int d=(p.right==null ? -1 : altezza(p.right));//parte destra
return 1+(s<d ? d : s);//somma a 1 la parte più alta
}//un nodo h=0 ,due nodi h=1
//Dato che ogni nodo della Treelist contiene una radice calcolando l'altezza del nodo si
//calcola l'altezza dello stesso albero

public int hnodo(int i)//torna l'altezza del BST la cui radice sta al nodo i della Treelist
{return altezza(index(i).info);}

public void ListSort()//ordina la lista attiva
{ int i,j,tmp;
IntBSTNode tmp2;

for(i=1; i<length();i++)
{ tmp=hnodo(i);//tengo l'altezza del nodo con indice i
tmp2=index(i).info;//tengo anche il suo campo info

for(j=i; j>0 && tmp<hnodo(j-1); j--)//comparo le altezze

index(j).info=index(j-1).info;//cambio i campi info

index(j).info=tmp2;
}
}//ListSort

Tuttavia come potete vedere la complessità è molto alta(dovrebbe essere O(n^3 )anche se vorrei essere sicuro
magari voi sapete dirmi dove trovare informazioni/link sulla rete su come calcolarla )

Mi è venuta qualche idea su come diminuirla (esempio mettere un array di oggetti che tenga gli indirizzi di mem in modo da non chiamare sempre il metodo index) ma gradirei tanto il vostro aiuto
Tenete presente che prima della call ListSort e dopo gli indirizzi di mem non devono cambiare(solo i riferimenti)


datemi una mano
grazie anticipate
scusa l'intromissione ma tu all'università sai prima dell'esame quello che dovrai fare?
M86 è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2003, 21:49   #16
SalvoX
Senior Member
 
L'Avatar di SalvoX
 
Iscritto dal: Aug 1999
Città: Milano
Messaggi: 606
magari

questo è un precedente compito di un vecchio appello e quindi devo risolverlo per farmi "le ossa" diciamo

Cmq ho risolto in parte il prob ..posto la soluzione presto cosi vediamo come va
SalvoX è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2003, 00:55   #17
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "SalvoX"

we ragazzi ho trovato un debugger davvero fantastico per java
http://www.karmira.com/ trovate bugseeker (versione evaluation 30 giorni ma vi dovete lasciare la mail per avere il codice
di 30 giorni)
tutto visuale permette di fare debug davvero precisi tramite print delle var/stack/ ecc ecc
Se qualcuno riesce a "ranarlo" mi mandi un pvt
ciao
Oggi per fantastico si intende "visivamente appagante", vero?
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2003, 18:38   #18
SalvoX
Senior Member
 
L'Avatar di SalvoX
 
Iscritto dal: Aug 1999
Città: Milano
Messaggi: 606
x mjordan
beh io non sono affatto tra quelli che sceglie un programma per l'aspetto visivo anzi tutto il contrario
con questo debug faccio in pochi istanti quello che prima dovevo fare con una sfilzadi comandi dos e inoltre ho la visione sinottica della memoria e dello stack...ho aumentato la produttività del 80%...se poi te sei uno di quelli che preferisce un bello sfondo nero e e grafica ascii beh io sono per la più totale libertà )) io se trovo qualcosa che mi aiuta graficamente la preferisco(purchè abbia un senso usarla)

Tornando al programma ecco la nuova versione

Codice:
class Treenodo
{
	IntBSTNode info;//contiene le root degli alberi binari
	Treenodo next;//contiene il successivo nodo
	int h;//contiene l'altezza del relativo albero

public Treenodo(IntBSTNode a)
{
	this(a,null);
}

public Treenodo(IntBSTNode a, Treenodo n)
{info=a; next=n; h=IntBST.altezza(a);}//altezza è un metodo statico

public IntBSTNode visit()
{return info;}

}//class Treenodo

class Treelist//---------------------------------------------
{
	Treenodo head,tail;
	Treenodo[] index;//Array di obj treenodo dove tengo gli ind i mem
	int ind=0;//indice per sapere totale treenodi

public Treelist()
{head=tail=null;index=new Treenodo[10];}//array fisso a 10..si potrebbe usare vector

public boolean isEmpty()
{return head==null;}


public void ListSort()//ordina la lista attiva
{ int i,j,tmp;
  Treenodo tmp2;

	for(i=1; i<ind;i++)
		{ tmp=index[i].h;//tengo l'altezza del nodo con indice i
		  tmp2=index[i];//tengo obj

		  for(j=i; j>0 && tmp<index[j-1].h; j--)//comparo le altezze
			{
		  		index[j]=index[j-1];//sistemo l'array

			}
		  index[j]=tmp2;

		}
	for(int k=0;k<ind-1;k++)//cicla n-1 volte
		if(index[k].next != index[k+1])//mi assicuro che il campo next sia giusto
		 	index[k].next=index[k+1];//se non lo è lo assegno

	head=index[0];//collego la testa
	tail=index[ind-1];//collego la coda

}//ListSort

//-----------------------------------------------------------------------------
public void printAll()//stampa tutte le radici
	{
		System.out.println("\n lista=");
		for(Treenodo tmp=head; tmp !=null; tmp=tmp.next)
		System.out.println("rad"+tmp.info.key + " ");
	}

public void printH()//stampa tutte le altezze
	{
		System.out.println("\n lista=");
		for(Treenodo tmp=head; tmp !=null; tmp=tmp.next)
		System.out.println("H="+tmp.h + " ");
	}



public void addToTail(IntBSTNode el)//aggiunge in coda e aggiorna index
	{
		if(!isEmpty())//se la lista non è vuota
		 {tail.next=index[ind++]=new Treenodo(el);//nuovo obj
		  tail=tail.next;}//fa puntare il vecchio tail al nuovo obj
		else
			head=tail=index[ind++]=new Treenodo(el);//se la lista è vuota
	}



}//class Treelist
praticamente adesso la complessità dovrebbe essere O(n^2) + n ma non ne sono sicuro....l'array fisso a 10 o costante che sia non è il massimo....per il resto non mi viene in mente nulla

fatemi sapere che ne pensate

ciao e grazie
SalvoX è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2003, 19:14   #19
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Hey non ti inkazzare, stavo scherzando.

La tua implementazione mi sembra discreta, ma considera delle cose, solo a livello di riflessione:
1) L'assunzione che abbiamo fatto nel mantenere le altezze degli alberi sarebbe stata accettata dal tuo prof?
2) Il miglioramento del tempo di esecuzione è solo teorico. Nella pratica ciò che guadagni evitando di effettuare una scansione degli alberi per vedere quanti nodi contiene, lo perdi nell'effettivo inserimento del nodo (per ogni nodo inserito/cancellato devi effettuare un incremento/decremento).

Avevo fatto altre osservazioni che ora non ricordo Te le posto + tardi.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2003, 17:52   #20
SalvoX
Senior Member
 
L'Avatar di SalvoX
 
Iscritto dal: Aug 1999
Città: Milano
Messaggi: 606
figurati ...non mi sono mica ikazzato per cosi poco...dicevo solo la mia

per la 1) sono sicuro di si
per la 2) beh credo che si guadagni qualcosa di +(se vedicoem era il metodo lenght beh ci sono molti + confronti di un semplice assegnamento quindi credo che il guadagno ci sia..cmq tu credi di saper calcolare la complessità in questa ultima versione?
approssimativamente .....

cmq tanto per dirti ho provato a fare un metodo per fare lo swap di due oggetti tipo Nodo (doppio o semplicemente linkato) e viene davvero difficile e lungo quindi credo che userò sempre questo sistema per gestire la struttura dati in questione come fosse un array..che ne dici?
grazie dele tue risposte
SalvoX è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico Lenovo IdeaPad Slim 3: un notebook Snapdragon X ...
TP-Link protagonista a IFA 2025 con tant...
TK02 S è la nuova e-enduro di THOK con m...
Fallout 76: Rinnovamento C.A.M.P., pi&ug...
Toyota produrrà auto elettriche in Europ...
HONOR Magic V5 parte bene: lancio da rec...
Dyson svela 11 nuovi prodotti all'IFA: d...
Zurigo si scalda con i rifiuti: le pompe...
Noctua pubblica la nuova roadmap: primo ...
Palo Alto Networks presenta novità...
Surya, il modello di IA di IBM e NASA ch...
I browser Arc e Dia diventano parte dell...
Duster e Bigster, tutto quello che manca...
Superman: Man of Tomorrow, confermato da...
SK Hynix, accordo storico: 10% degli uti...
Arriva Veeam Software Appliance: protezi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:27.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v