Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环列表删除节点_Java_Data Structures_Circular List - Fatal编程技术网

Java 循环列表删除节点

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++)

我不确定这是否是为循环列表创建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++) {
            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