Связанный список метода Set (int index, E element) - PullRequest
0 голосов
/ 21 февраля 2020

Борется с моим методом set, который должен заменить элемент по указанному индексу в списке на указанный элемент и вернуть элемент ранее по указанному индексу. Я не уверен, что все правильно, но мой вопрос, что я вернусь в конце?

    public E set(int index, E element) throws IndexOutOfBoundsException {
    if (index < 0) {
        throw new IndexOutOfBoundsException();
    }
    if (index >= size) {
        throw new IndexOutOfBoundsException();
    }
    Node newNode = new Node(element);
    Node tempNode = head;
    for (int i = 1; i < index; i++) {
        tempNode = tempNode.getmNextNode();
    }
    newNode.setmNextNode(tempNode.getmNextNode().getmNextNode());
    tempNode.setmNextNode(newNode);
    return ;
}

Мой класс узла:

 public class Node<E> {
private E mElement;
private Node<E> mNextNode;

Node(E data) {

    this.setmElement(data);
}
public E getmElement() {
    return this.mElement;
}
public void setmElement(E element) {
    this.mElement = element;
}
public Node<E> getmNextNode()
{
    return this.mNextNode;
}
public void setmNextNode(Node<E> node)
{
    this.mNextNode = node;
}}

1 Ответ

1 голос
/ 21 февраля 2020

На самом деле вам не нужно создавать новый узел (например, новый узел в вашем коде). Вы можете go на нужный узел с указанным индексом, после чего вы можете заменить элемент.

public E set(int index, E element) throws IndexOutOfBoundsException {
    if (index < 0) {
        throw new IndexOutOfBoundsException();
    }

    if (index >= size) {
        throw new IndexOutOfBoundsException();
    }

    int i = 0;
    Node tempNode = head;

    while (i < index)
    {
        tempNode = tempNode.getmNextNode();
        i++;
    }

    E previousElement = tempNode.getmElement();
    tempNode.setmElement(element);

    return previousElement;
}
...