Skip to content

Commit 328712f

Browse files
author
Cody Gagnon
committed
Finished
1 parent 63f3ca6 commit 328712f

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

‎class_code/11-16-Linked-Lists-2/MyLinkedList.java‎

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ public boolean equals(Object o) {
244244
*/
245245
private class MyIterator implements Iterator<E> {
246246
Node p = head, prev = null, prevprev = null;
247-
247+
boolean nextCalled;
248248
/**
249249
* Create an iterator for a MyLinkedList
250250
*/
@@ -267,6 +267,7 @@ public E next() {
267267
if (!hasNext()) {
268268
throw new NoSuchElementException();
269269
}
270+
nextCalled = true;
270271
E item = p.item;
271272
prevprev = prev;
272273
prev = p;
@@ -278,12 +279,24 @@ public E next() {
278279
* Remove the object currently pointed at by the iterator
279280
*/
280281
public void remove() {
282+
if (!nextCalled) {
283+
throw new IllegalStateException();
284+
}
285+
nextCalled = false;
281286
// remove the node pointed at by prev
282287
if (prevprev != null) {
283288
prevprev.next = prev;
284289
prev = prevprev;
285-
prevprev = null;
290+
} else {
291+
head = head.next; // skip the first one
292+
prev = null;
293+
}
294+
if (p == null) {
295+
// we just removed the last one
296+
tail = prevprev;
286297
}
298+
prevprev = null;
299+
size--;
287300
}
288301
}
289302

0 commit comments

Comments
 (0)