Skip to content

Instantly share code, notes, and snippets.

@anton0xf
Created January 31, 2022 10:57
Show Gist options
  • Save anton0xf/0412b7b64dbab64b9fbe4536432b356d to your computer and use it in GitHub Desktop.
Save anton0xf/0412b7b64dbab64b9fbe4536432b356d to your computer and use it in GitHub Desktop.
Insert value into LinkedList before other value. And set iterator to point on iserted value
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
public class InsertBeforeTest {
private void insertBefore(int before, int val, ListIterator<Integer> iter) {
while(iter.hasNext()) {
Integer cur = iter.next();
if (cur >= before) {
iter.previous();
iter.add(val);
iter.previous();
return;
}
}
iter.add(val);
iter.previous();
}
@Test
public void testInsertAtStart() {
LinkedList<Integer> xs = new LinkedList<>(List.of(1, 2, 3));
ListIterator<Integer> iter = xs.listIterator();
insertBefore(1, 4, iter);
Assertions.assertFalse(iter.hasPrevious());
Assertions.assertTrue(iter.hasNext());
Assertions.assertEquals(4, iter.next());
Assertions.assertEquals(List.of(4, 1, 2, 3), xs);
}
@Test
public void testInsertAtMiddle() {
LinkedList<Integer> xs = new LinkedList<>(List.of(1, 2, 3));
ListIterator<Integer> iter = xs.listIterator();
insertBefore(2, 4, iter);
Assertions.assertEquals(4, iter.next());
Assertions.assertEquals(List.of(1, 4, 2, 3), xs);
}
@Test
public void testInsertAtEnd() {
LinkedList<Integer> xs = new LinkedList<>(List.of(1, 2, 3));
ListIterator<Integer> iter = xs.listIterator();
insertBefore(5, 4, iter);
Assertions.assertEquals(4, iter.next());
Assertions.assertEquals(List.of(1, 2, 3, 4), xs);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment