Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> Java Programming >> .

Come unire due Ordinati Liste ADT

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 + + ; }



 

Programmazione © www.354353.com