Quell'eccezione significa che non hai un elemento precedente...

Dovresti fare una cosa del tipo:

codice:
if (iteratore.hasPrevious()) {
   iteratore.previuos();
}
Ad ogni modo rivedrei quell'algoritmo, non sono sicuro che faccia esattamente quello che credi

edit: mancano tutti i tipi generici

ps: il codice va messo col tag CODE

edit: perché fai quelle assegnazioni inutili?

List L = l;
List L1 = l1;

A cosa servono? A nulla...

Inoltre:

ListIterator L = l1.listIterator();
ListIterator L1 = l2.listIterator(l2.size()-1);

L punta a l1
L1 punta a l2

chiaro, no?

Il -1 sul list iterator è sbagliato: il cursore è posto prima (o dopo) di un elemento, non sull'elemento