1. List content after loop: ["sky","sky","sky","sky","sky","lynx","fever","shock"] New Code: for (int i = 0; i < teams.size(); i+=2) { teams.add(i+1, teams.get(i)); } 2. Items from src are being removed from the front, and being added to the front of dst until src is empty. At the end of the loop, the items from src are in backwards order at the front of dst, and the items in dst have simply been shifted back. 3. public static ListADT interleave(ListADT L1, ListADT L2) throws BadListException { Iterator iteratorL1 = L1.iterator(); Iterator iteratorL2 = L2.iterator(); if(L1 == null || L2 == null) { throw BadListException(); } else if(L1.isEmpty() && L2.isEmpty()) { return new ListADT(); } else if(L1.isEmpty()) { ListADT L3 = new ArrayList(); while(iteratorL2.hasNext()) { L3.add(iteratorL2.next()); } return L3; } else if(L2.isEmpty()) { ListADT L3 = new ArrayList(); while(iteratorL1.hasNext()) { L3.add(iteratorL1.next()); } return L3; } else { ListADT L3 = new ArrayList(); while(iteratorL1.hasNext()) { L3.add(iteratorL1.next()); if(iteratorL2.hasNext()) { L3.add(iteratorL2.next()); } } while(iteratorL2.hasNext()) { L3.add(iteratorL2.next()); } return L3; } }