Set(int index, E element)方法链表

Set(int index, E element) method linked list

努力使用我的设置方法,该方法应将列表中指定索引处的元素替换为指定元素,return 先前位于指定索引处的元素。我不确定一切是否正确,但我的问题是我最终会 return 什么?

    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 ;
}

我的节点class:

 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;
}}

实际上您不需要创建新节点(例如代码中的 newNode)。您可以转到指定索引的所需节点,然后您可以替换元素。

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;
}