Задать вопрос
@Snikerssurgut

Как написать свои методы добавления и удаления элемента в LinkedList?

Имеется задание: изобрести велосипед, написать свой listIterator. Основная часть методов получилась (конечно, через одно место), а вот основные 2 метода не удалось написать (постоянно либо ошибки, либо бесконечный лист).
import java.util.*;

public class MyListIterator<T> implements ListIterator<T> {
    private Node<T> cur;
    private Node<T> prev;
    private int index;
    private boolean lastOpWasNext;
    private boolean lastOpWasPrev;

    MyListIterator(Node<T> head) {
        cur = head;
        prev = null;
        index = 0;
    }

    public boolean hasNext() {
        return cur != null;
    }
    public boolean hasPrevious() {
        return  prev != null;
    }
    public int nextIndex() {
        return index;
    }
    public int previousIndex() {
        return index-1;
    }
    public T next() throws NoSuchElementException {
        if(!this.hasNext()) {
            throw new NoSuchElementException();
        }
        prev = cur;
        cur = cur.next;
        lastOpWasNext = true;
        lastOpWasPrev = false;
        index++;
        return prev.elem;
    }
    public T previous() throws NoSuchElementException{
        if(!this.hasPrevious())
            throw new NoSuchElementException();
        cur = prev;
        prev = prev.prev;
        lastOpWasNext = false;
        lastOpWasPrev = true;
        index--;
        return cur.elem;
    }
    public void add(T elem) throws IndexOutOfBoundsException {
        // этот метод не получилось сделать
    }
    public void set(T elem) throws IllegalStateException {
        Node<T> el = null;
        if(lastOpWasNext) {
            el = prev;
        }
        if(lastOpWasPrev) {
            el = cur;
        }
        if(el == null) throw new IllegalStateException();
        el.elem = elem;
    }
    public void remove() throws UnsupportedOperationException {
        // и этот метод не получилось сделать
    }
}
  • Вопрос задан
  • 1682 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Sk1talec
Фанат Java, Android и компьютерного зрения :)
Почему бы не подсмотреть в оригинал?)
Реализация ListIterator итератора в Java со строки 823
Конечно с непривычки тяжело смотреть исходники из JDK, но это полезный скилл, который в будущем пригодится.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы