Pages: [1]   Go Down
Print
Author Topic: problema con merge  (Read 1207 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Giovi89
Apprendista Forumista
**
Offline Offline

Posts: 273


« on: 06-04-2009, 16:19:20 »

Salve ragazzi,
potreste darmi una dritta sullo svolgimento di questo esercizio e sul significato intrinseco di merge?
ecco il testo:
Fondere due liste semplicemente concatenate ed
ordinate di interi in una lista semplicemente
concatenata ordinata.

Grazie  in anticipo...
Logged
Eleirgab
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 344


Apprezzatemi ora. Eviterete la fila


WWW
« Reply #1 on: 06-04-2009, 16:43:39 »

Merge vuol dire unione... Di fatto nn fa altro che prendere due liste distinte e "fonderle" in una nuova formata da elementi di entrambe le liste

Es
L1 = 2, 4, 8, 12
L2 = 3, 6, 100
L3 = 2, 3, 4, 6, 8, 12, 100

Dovrebbe essere tutto qui. Ci si dovrebbe mettere daccordo su cosa dovrebbe avvenire in caso di "doppioni", ma il succo è questo.
Logged

Collettivo SDAI

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GIT d-- s+:+ a-- C++ UL++ P L+++ E- W+++>$ N? o? K- w-- O? M V? PS++ PE- Y+ PGP- t 5? X+ R>+ tv-- b++ DI+++ D- G e h! r y+
------END GEEK CODE BLOCK-----
Giovi89
Apprendista Forumista
**
Offline Offline

Posts: 273


« Reply #2 on: 06-04-2009, 17:09:59 »

Ho provato a risolvere con questo codice ma mi va sempre a ciclo infinito potete darmi una dritta?
Code:
public static lista merge(lista l1, lista l2)
{
lista l3;
Nodo a=l1.gethead();
Nodo b=l2.gethead();
if(a.getinfo()<b.getinfo())
l3=new lista(a);
else
l3=new lista (b);

boolean t=false;
for(a=a.getnext();a.getnext()!=null; a=a.getnext())
{
t=false;
for(b=l2.gethead(); b.getnext()!=null; b=b.getnext())
{
if(a.getinfo()<b.getinfo())
{
l3.inserttail(a.getinfo());
t=true;
}
else
{
l3.inserttail(b.getinfo());
t=true;
}
}
}
return l3;
}
Grazie in anticipo...
Logged
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #3 on: 06-04-2009, 17:13:32 »

Code:
public static ListaInt merge(ListaInt a,ListaInt b)
{
NodoInt aux=new NodoInt(89);

NodoInt e=new NodoInt(4);
ListaInt p=new ListaInt(e);
NodoInt s=a.posizione(0);//a.getHead()
NodoInt y=b.posizione(0);//b.getHead()
for(int r=0;r<=a.getSize();r++)
{
for (int t=0;t<=b.getSize()&&y.getInfo()<s.getInfo();t++,y=y.getNext())
{
p.insertTail(y.getInfo());

}

p.insertTail(s.getInfo());
s=s.getNext();

}
p.deleteHead();
//devo mettere tutti gli elementi




return p;
}
provatelo mi funziona fino ad un certo punto


Logged

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

Posts: 633


« Reply #4 on: 10-04-2009, 22:54:53 »

ok tutto risolto!!
Logged

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

Posts: 198



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

e postalo corretto allora  ok
Logged

I have nothing to declare except my genius.
Pages: [1]   Go Up
Print
Jump to: