Un tipo di dato astratto ( ADT ) lista o lista concatenata come è più comunemente chiamato, è una delle strutture di dati fondamentali in informatica e una delle prime alternative al semplice array appresa da un studente di informatica . Anche se si sacrifica la capacità di muoversi a metà della lista , senza cercare tra la lista prima , la lista ADT rende banalmente facile da espandere e ridurre i dati memorizzati . Questo codice è implementato in Java , in quanto incorporato Linked struttura dati Lista di Java ci consente di arrivare direttamente al punto, ma la stessa logica potrebbe essere implementato con modifica minima in qualsiasi altro linguaggio C -like. Istruzioni
1
Crea il tuo due liste collegate e li inizializza con alcuni dati ordinati incollando il seguente in un file Java :
LinkedList lista1 = new LinkedList ( ) ;
LinkedList list2 = new LinkedList ();
for (int x = 0; x < 100 ; x + + ) si dispone di due liste collegate piene di numeri casuali che sono stati ordinati
2
creare un nuovo elenco collegato di tenere l'elenco unito incollando il seguente : .
LinkedList fusa = new LinkedList ();
3
impostare un semplice ciclo while . Questo ciclo proseguirà fino a quando entrambe le liste hanno almeno un elemento in loro, ed esso si sposterà il più piccolo degli elementi superiori alla lista risultante dalla fusione : .
//Mentre entrambe le liste non sono vuoti
while (! list1.isEmpty ( ) && ! list2.isEmpty ( )) {
( list1.peek ( ) < = list2.peek ( ) ) {
fusa . add ( list1.pop ());
} else {
merged.add ( list2.pop ()); }
}
il comando " Peek " guarda l'elemento in testa alla lista , mentre " pop " sia guarda l'elemento e lo rimuove . Quando viene effettuato il confronto , si desidera solo per sbirciare in cima alla lista per vedere quale è più piccolo . Quando arriva il momento di unire le liste , si vuole togliere il valore superiore e lo metterà sui nuovi elenchi .
4
finire il lavoro. Quando uno elenco è vuoto , non c'è bisogno di continuare a fare confronti . Pertanto , le vecchie estremità dell'ansa, e un altro anello è creato per riempire il resto della lista risultante dalla fusione con i rimanenti dati dell'ultimo elenco :
//Mentre il primo elenco non è vuoto
mentre {
merged.add ( list1.pop ()); }
( list1.isEmpty ( ) ! ) per
//mentre la seconda lista non è vuota .
mentre {
merged.add ( list2.pop ()); }
( list2.isEmpty ( ) ! ) economici 5
stampare i risultati in modo da poter controllare l'elenco risultante dalla fusione e garantire ha funzionato correttamente:
int x = 1;
per ( doppia y: fusa ) {
sistema . out.println ( x + " " + y) ;
x + + ; }