/**
* Merge two sorted lists, L1 and L2, into a sorted list L.
**/
public static void merge(List L1, List L2, Comparator c, List L) {
while (!L1.isEmpty() && !L2.isEmpty())
if (c.compare(L1.first().element(), L2.first().element()) <= 0)
L.insertLast(L1.remove(L1.first()));
else
L.insertLast(L2.remove(L2.first()));
while(!L1.isEmpty()) // move the remaining elements of L1
L.insertLast(L1.remove(L1.first()));
while(!L2.isEmpty()) // move the remaining elements of L2
L.insertLast(L2.remove(L2.first()));
}