Pages: 1 [2]   Go Down
Print
Author Topic: come creare una lista  (Read 3279 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #15 on: 31-03-2009, 23:04:31 »

Questa è una lista linkata. Una lista è una struttura che offre operazioni di inserimento, rimozione, e recupero dei dati. I dettagli implementativi sono a piacere. In Java esiste una ArrayList, una LinkedList... Hanno velocità diverse su operazioni diverse. Dipende dall'utilizzio medio previsto la lista che si va a scegliere.
In un post inserito nel forum di Programmazione 2 le domande sono riferite sempre alla materia Programmazione 2, a meno che un diverso riferimento venga esplicitato.
Per quello che ricordo di aver fatto a Programmazione 2, con lista (senza ulteriori caratteristiche) si intende una "lista concatenata semplice", e ho risposto di conseguenza, senza timore di errare  .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #16 on: 03-04-2009, 15:45:53 »

Code:
public class ListaLinkata
{
private Nodo testa;
public ListaLinkata(Nodo n)
{
testa=n;
}
public ListaLinkata()
{
this(null);
}
public boolean vuota()
{
return (testa==null);
}
public void inserisciTesta(Comparable c)
{
testa=new Nodo(c,testa);
}
public void inserisciCoda(Comparable c)
{
if(vuota())
{
testa=new Nodo(c);
}
else
{
Nodo aux=testa;
while(aux.getNext()!=null)
aux=aux.getNext();
aux.setNext(new Nodo(c));
}
}
public void inserisciOrdinato(Comparable c)
{
if(vuota())
testa=new Nodo(c);
else
if(testa.getInfo().compareTo(c)>0)
inserisciTesta(c);
else
{
Nodo aux=testa;
while(aux.getNext()!=null&&aux.getNext().getInfo().compareTo(c)<0)
aux=aux.getNext();
aux.setNext(new Nodo(c,aux.getNext()));
}
}
public Comparable cancellaTesta()
{
if(vuota())
throw new EmptyListException();
else
{
Nodo aux=testa;
testa=testa.getNext();
return aux.getInfo();
}
}
public Comparable cancellaCoda()
{
if(vuota())
throw new EmptyListException();
else
{
Nodo aux=testa;
Nodo prec=null;
while(aux.getNext()!=null)
{
prec=aux;
aux=aux.getNext();
}
if(prec==null)
testa=null;
else
prec.setNext(null);
return aux.getInfo();

}
}
public Comparable cancellaChiave(Comparable c)
{
if(vuota())
throw new EmptyListException();
else
{
Nodo aux=testa;
Nodo prec=null;
while(aux!=null&&aux.getInfo().compareTo(c)!=0)
{
prec=aux;
aux=aux.getNext();
}
if(aux!=null)
if(prec==null)
cancellaTesta();
else
{
prec.setNext(aux.getNext());
return aux.getInfo();
}
return null;
}
}
public Comparable cancellaChiaveOrdinata(Comparable c)
{
if(vuota())
throw new EmptyListException();
else
{
Nodo aux=testa;
Nodo prec=null;
while(aux!=null&&aux.getInfo().compareTo(c)<0)
{
prec=aux;
aux=aux.getNext();
}
if(aux!=null&&aux.getInfo().compareTo(c)==0)
if(prec==null)
cancellaTesta();
else
{
prec.setNext(aux.getNext());
return aux.getInfo();
}
return null;
}
}
public Nodo cerca(Comparable c)
{
Nodo aux=testa;
while(aux!=null&&aux.getInfo().compareTo(c)!=0)
aux=aux.getNext();
return aux;
}
public Nodo cercaOrdinata(Comparable c)
{
Nodo aux=testa;
while(aux!=null&&aux.getInfo().compareTo(c)<0)
aux=aux.getNext();
if(aux!=null&&aux.getInfo().compareTo(c)==0)
return aux;
return null;
}
public void stampa()
{
Nodo aux=testa;
while(aux!=null)
{
System.out.print(aux.getInfo()+"\t");
aux=aux.getNext();
}
System.out.println();
}
}
questa è la mia lista per oggetti generici..qualcuno può darci un' occhiata?inoltre quando la compilo ottengo questo messaggio:
Code:
Note: ListaLinkata.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
cosa vuol dire precisamente?come risolvo?
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
Mito
Matricola
*
Offline Offline

Posts: 56


« Reply #17 on: 14-04-2009, 13:17:37 »

questa è la mia lista per oggetti generici..qualcuno può darci un' occhiata?inoltre quando la compilo ottengo questo messaggio:
Code:
Note: ListaLinkata.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
cosa vuol dire precisamente?come risolvo?

Hai risolto poi? Come?
Logged
djjeck
Matricola
*
Offline Offline

Gender: Male
Posts: 89


Ho una donna nuda per avatar. Non c'era di meglio.


WWW
« Reply #18 on: 15-04-2009, 14:04:31 »

cosa vuol dire precisamente?come risolvo?
Se vuoi sapere cosa vuol dire più precisamente, per maggiori dettagli ricompila con -Xlint:unchecked.
Ovvero, quando compili il tuo file, aggiungi l'opzione -Xlint:unchecked, tra javac ed il nome del file. Puoi farlo anche in SciTE, scrivendo nella finestra dell'output di riga di comando e premendo invio.

Le operazioni unsafe sono quelle di non usare i generics laddove sia possibile.
Il compilatore di segnala, come warning, che potresti avere problemi di casting.
Se invece di utilizzare Comparable, utilizzassi Comparable<T>, le operazioni sarebbero più sicure.
In questo caso, in pratica, se hai due elementi Comparable, non è detto che siano confrontabili tra loro. Ad esempio Integer e Date sono entrambi di tipo Comparable, e possono essere legittimamente inseriti nella tua struttura dati, ma darebbero problemi al momento di confrontarli tra loro.

Se usassi Comparable<T>, all'instanziane della lista potresti scrivere
Code:
new ListaLinkata<Integer>()
, e il compilatore ti assicurerebbe allora che tutti i Comparable presenti sono solo di tipo Comparable<Integer>, e non possono generare problemi di non confrontabilità.

Ecco a cosa possono servire i generics. Chi è interessato approfondisca.
Logged
Pages: 1 [2]   Go Up
Print
Jump to: