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

问题描述 投票:0回答:1

与我的设置方法进行斗争,该方法应将列表中指定索引处的元素替换为指定元素,并在指定索引处返回先前的元素。我不确定一切是否正确,但我的问题是最终我将返回什么?

    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;
}}
java replace linked-list singly-linked-list
1个回答
0
投票

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

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.