Scusa, ma come pretendi che qualcuno sappia darti una risposta?

addLast() e remove() cosa fanno?

Se remove() rimuove un elemento da l, il comportamento dei due cicli di for sono alquanto anomali, se l ha inizialmente 20 elementi, il primo ciclo di for si ferma all'ottava iterazione

i l.size
0 20
1 19
2 18
3 17
4 16
5 15
6 14
7 13 i<l.size()/2 ? no, quindi esce dal ciclo di for

Se questo è il comportamento desiderato, capisci bene che nessuno può capire cosa vuoi fare, se invece non ti eri accorto di questa cosa ti consiglierei vivamente di imparare a fare un po' di debug usando System.out.println().