Java 循环列表删除节点
我不确定这是否是为循环列表创建remove方法的正确方法,而且我在让它为1节点列表工作时遇到了问题Java 循环列表删除节点,java,data-structures,circular-list,Java,Data Structures,Circular List,我不确定这是否是为循环列表创建remove方法的正确方法,而且我在让它为1节点列表工作时遇到了问题 public void remove() { if(first.getNext() == null) { first = null; first.setNext(null); } else { Node current = first; for(int i = 0; i < getSize() - 1; i++)
public void remove() {
if(first.getNext() == null) {
first = null;
first.setNext(null);
} else {
Node current = first;
for(int i = 0; i < getSize() - 1; i++) {
current = current.getNext();
}
first = first.getNext();
current.setNext(first);
size--;
}
}
public void remove(){
if(first.getNext()==null){
第一个=空;
first.setNext(null);
}否则{
节点电流=第一;
对于(int i=0;i
对于大于两个的列表,我可以让它正常工作,但我不确定这是否是解决问题的最佳方法。有人对如何改进这一点以及如何正确删除一个节点列表有什么建议吗?即使我将第一个节点设置为null,下一个节点也设置为null,它仍然返回我的原始输入
编辑:对于以后看这个的人,我只是打印了一条消息,说你不能删除元素。因为我的作业不清楚该怎么做。这不行。我想,它根本无法执行以下部分:
first = null;
first.setNext(null);
我认为这会引发NullpointerException的原因。首先将first
设置为null,然后尝试取消对null
的引用
我不会提供确切的代码(因为这是一种家庭作业,对吗?;),但请检查维基百科()中的伪代码:
您可以添加更多详细信息或代码!尺寸是多少?如果它列出了所有元素,可以直接检查getsize()==1。如何检索数据?getSize()返回循环列表的大小,getData()返回存储在节点中的整数,getNext()返回当前节点指向的节点。是的,这是一个练习,我收到了代码,需要创建一个不带参数的移除函数,我不允许更改任何现有代码。
function remove(List list, Node node)
if node.prev == null
list.firstNode := node.next
else
node.prev.next := node.next
if node.next == null
list.lastNode := node.prev
else
node.next.prev := node.prev
destroy node