Pages: [1]   Go Down
Print
Author Topic: Lista Linakta circolare  (Read 1389 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« on: 10-04-2009, 15:04:26 »

L'ho implementata così..ma ci sono alcune cose che non credo siano proprio ben fatte....qualche suggerimento?
Code:
public class LinkedListCircolare
{
private Nodo head;
public LinkedListCircolare()
{
head=null;
}
public boolean isEmpty()
{
return (head==null);
}
public Nodo getHead()
{
return head;
}
public void insert(Comparable c)
{
if(isEmpty())
{
head=new Nodo(c);
head.setNext(head);
}
else
{
if(((Comparable)head.getInfo()).compareTo(c)>0)
{
Nodo aux=head;
for(;aux.getNext()!=head;aux=aux.getNext());
head=new Nodo(c,head);
aux.setNext(head);
}
else
{
Nodo aux=head;
for(;aux.getNext()!=head&&((Comparable)aux.getNext().getInfo()).compareTo(c)<0;aux=aux.getNext());
aux.setNext(new Nodo (c,aux.getNext()));
}
}
}
public Comparable delete(Comparable c)
{
if(isEmpty())
throw new EmptyListException();
else
{
if(head.getInfo().compareTo(c)==0)
{
Nodo aux=head;
Nodo temp=head;
for(;aux.getNext()!=head;aux=aux.getNext());
head=head.getNext();
aux.setNext(head);
return temp.getInfo();
}
else
{
Nodo aux=head;
Nodo prev=null;
for(;aux.getNext()!=head&&((Comparable)aux.getInfo()).compareTo(c)!=0;prev=aux,aux=aux.getNext());
if(prev!=null)
{
if(((Comparable)aux.getInfo()).compareTo(c)==0)
{
prev.setNext(aux.getNext());
return aux.getInfo();
}
else
return null;
}
else
{

}
}
}
return null;
}
public Nodo search(Comparable c)
{
if(isEmpty())
throw new EmptyListException();
else
{
Nodo aux=head;
for(;aux.getNext()!=head&&((Comparable)aux.getInfo()).compareTo(c)!=0;aux=aux.getNext());
if(((Comparable)aux.getInfo()).compareTo(c)==0)
return aux;
return null;
}
}
public void stampa()
{
System.out.println(head.getInfo());
Nodo aux=head.getNext();
for(;aux!=head;aux=aux.getNext())
System.out.println(aux.getInfo());
System.out.println();
}
}
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.
TheSpecialOne
Apprendista Forumista
**
Offline Offline

Posts: 232



« Reply #1 on: 10-04-2009, 15:20:52 »

L'ho implementata così..ma ci sono alcune cose che non credo siano proprio ben fatte....qualche suggerimento?
Code:
public class LinkedListCircolare
{
private Nodo head;
public LinkedListCircolare()
{
head=null;
}
public boolean isEmpty()
{
return (head==null);
}
public Nodo getHead()
{
return head;
}
public void insert(Comparable c)
{
if(isEmpty())
{
head=new Nodo(c);
head.setNext(head);
}
else
{
if(((Comparable)head.getInfo()).compareTo(c)>0)
{
Nodo aux=head;
for(;aux.getNext()!=head;aux=aux.getNext());
head=new Nodo(c,head);
aux.setNext(head);
}
else
{
Nodo aux=head;
for(;aux.getNext()!=head&&((Comparable)aux.getNext().getInfo()).compareTo(c)<0;aux=aux.getNext());
aux.setNext(new Nodo (c,aux.getNext()));
}
}
}
public Comparable delete(Comparable c)
{
if(isEmpty())
throw new EmptyListException();
else
{
if(head.getInfo().compareTo(c)==0)
{
Nodo aux=head;
Nodo temp=head;
for(;aux.getNext()!=head;aux=aux.getNext());
head=head.getNext();
aux.setNext(head);
return temp.getInfo();
}
else
{
Nodo aux=head;
Nodo prev=null;
for(;aux.getNext()!=head&&((Comparable)aux.getInfo()).compareTo(c)!=0;prev=aux,aux=aux.getNext());
if(prev!=null)
{
if(((Comparable)aux.getInfo()).compareTo(c)==0)
{
prev.setNext(aux.getNext());
return aux.getInfo();
}
else
return null;
}
else
{

}
}
}
return null;
}
public Nodo search(Comparable c)
{
if(isEmpty())
throw new EmptyListException();
else
{
Nodo aux=head;
for(;aux.getNext()!=head&&((Comparable)aux.getInfo()).compareTo(c)!=0;aux=aux.getNext());
if(((Comparable)aux.getInfo()).compareTo(c)==0)
return aux;
return null;
}
}
public void stampa()
{
System.out.println(head.getInfo());
Nodo aux=head.getNext();
for(;aux!=head;aux=aux.getNext())
System.out.println(aux.getInfo());
System.out.println();
}
}

sembra buona...
Logged
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #2 on: 19-04-2009, 17:31:23 »

Ragazzi, ho un serio problema con le liste circolari semplici.
Se qualcuno di voi ha scritto una soluzione funzionante e completa, potrebbe per favore postarla ?
Vi ringrazio. ciao
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Gam
Apprendista Forumista
**
Offline Offline

Posts: 385



« Reply #3 on: 20-04-2009, 11:02:02 »

 

Logged
Giovi89
Apprendista Forumista
**
Offline Offline

Posts: 273


« Reply #4 on: 20-04-2009, 13:47:16 »

Ragazzi, ho un serio problema con le liste circolari semplici.
Se qualcuno di voi ha scritto una soluzione funzionante e completa, potrebbe per favore postarla ?
Vi ringrazio. ciao
Logged
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #5 on: 20-04-2009, 20:25:14 »

http://forum.sdai.unict.it/index.php?topic=2504.msg18025#msg18025
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.
Pages: [1]   Go Up
Print
Jump to: