gpt4 book ai didi

java - 双向链表删除方法

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:25 24 4
gpt4 key购买 nike

尝试实现删除指定索引处的节点并返回其数据元素的方法。参加初学者在线类(class),我不知道如何返回数据类型 E。抱歉,如果我的代码很糟糕。

public class MyLinkedList<E> extends AbstractList<E> {
LLNode<E> head;
LLNode<E> tail;
int size;

/** Create a new empty LinkedList */
public MyLinkedList() {
size = 0;
head = new LLNode<E>(null);
tail = new LLNode<E>(null);
head.next = tail;
tail.prev = head;

public E remove(int index)
{
int ithNode = 1; //tracks node path location
LLNode<E> newNode = new LLNode<E>(null);

if (index < 0 || index > size()) {
throw new IndexOutOfBoundsException();
}

if (index == 1) {
newNode = head.next;
head.next = null;
head.prev = null;
} else {
while (ithNode != index) {
head = head.next;
ithNode++;
}
if (head.next == null) {
head.prev.next = null;
head.prev = null;
} else {
head.prev.next = head.next;
head.next.prev = head.prev;
}
}
}

}

class LLNode<E>
{
LLNode<E> prev;
LLNode<E> next;
E data;

//Not sure if I should create another constructor here
public LLNode(E e)
{
this.data = e;
this.prev = null;
this.next = null;
}
}

最佳答案

请记住,E 是一个占位符,表示将进入 LinkedList 的任何数据类型。您将像返回任何其他元素一样返回数据。我的建议是,一旦到达要删除的元素,保存那里的数据,设置新的下一个和上一个引用,然后返回数据。示例:

E returnData = head.data;
//set references
return returnData;

关于java - 双向链表删除方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34500159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com