Метод удаления SinglyLinkedList (int index) - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть некоторые проблемы при реализации метода remove(int index), который должен удалить элемент по указанному индексу в списке. Моя первая проблема - как сдвинуть любые последующие элементы влево и вычесть один из их индексов. Я пытался

Node.getmNextNode() = tempNode.getmNextNode().getmNextNode();

, но это не правильно. Моя вторая проблема - как вернуть элемент по указанному индексу в конце.

public E remove(int index) throws IndexOutOfBoundsException {
    if (index < 0 || index >= size) {
        throw new IndexOutOfBoundsException();
    } else if (index == 0) {
        remove(0);
    } else {
        Node<E> tempNode = head;
        for  (int i = 0; i < index - 1; i++) {
            tempNode = tempNode.getmNextNode();
        }
        Node.getmNextNode() = tempNode.getmNextNode().getmNextNode();
        size--;
    }
    return ;
}

Мой класс Node:

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

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Измените определение remove следующим образом:

public E remove(int index) throws IndexOutOfBoundsException {
    Node<E> temp = null;
    if (index < 0 || index >= size) {
        throw new IndexOutOfBoundsException();
    } 
    if (index == 0) {
        temp = head;
        Node<E> tempNode = head;
        for  (int i = 0; i < size - 1; i++) {
            tempNode.setmElement(tempNode.getmNextNode().getmElement());
            tempNode = tempNode.getmNextNode();
        }
        tempNode = null;
    } else {
        Node<E> tempNode = head;
        for  (int i = 0; i < index - 1; i++) {
            tempNode = tempNode.getmNextNode();
        }
        temp = tempNode.getmNextNode();
        tempNode.setmNextNode(temp.getmNextNode());        
    }
    size--;
    return temp;
}
0 голосов
/ 20 февраля 2020

Вы можете попробовать вот так:

tempNode.setmNextNode(tempNode.getmNextNode().getmNextNode());

...