Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_Linked List_Nodes - Fatal编程技术网

Java 如何删除链接列表中的第一个节点?

Java 如何删除链接列表中的第一个节点?,java,loops,linked-list,nodes,Java,Loops,Linked List,Nodes,大家好,我在我的链表类中回顾了我的一些方法,当从链表中删除一个节点时,我发现了一个逻辑错误。我在使用removeFirst方法时,在removeLast方法中也遇到了一个错误。问题是两者都会删除列表中的最后一项。不知道为什么,但这是我的代码 删除第一个节点 删除最后一个节点 我环顾了已经发布的问题,但似乎找不到我想要的答案。 我知道一个节点至少有两个值 一个用来保存数据,另一个用来保存对下一个节点的引用 这就是我认为第一次的情况。但是当我一个接一个地调用这些方法时,它们都摆脱了最后一个节点。I

大家好,我在我的链表类中回顾了我的一些方法,当从链表中删除一个节点时,我发现了一个逻辑错误。我在使用removeFirst方法时,在removeLast方法中也遇到了一个错误。问题是两者都会删除列表中的最后一项。不知道为什么,但这是我的代码

删除第一个节点

删除最后一个节点

我环顾了已经发布的问题,但似乎找不到我想要的答案。 我知道一个节点至少有两个值 一个用来保存数据,另一个用来保存对下一个节点的引用
这就是我认为第一次的情况。但是当我一个接一个地调用这些方法时,它们都摆脱了最后一个节点。Idk我将查看我的代码,并在必要时更新此问题。但你们能看到我哪里做错了,给我指出正确的方向吗。谢谢。

如果您有一个列表a->B->C,a是列表的标题内容,要删除它,只需将指针向前移动到B,即列表中的下一个节点:

public T removeFirst() throws EmptyCollectionException {
    // Checking to see if the List is empty or not
    if ( isEmpty() )
        throw new EmptyCollectionException("LinkedList");

    Node<T> first = contents;

    contents = contents.getNext();
    count--;

    return first.getItem();
}

由于还需要返回与第一个节点关联的数据,因此需要保留对它的临时引用。我首先调用它

如果您有一个列表a->B->C,a是列表的标题内容,为了删除它,您只需将指针前进到B,即列表中的下一个节点:

public T removeFirst() throws EmptyCollectionException {
    // Checking to see if the List is empty or not
    if ( isEmpty() )
        throw new EmptyCollectionException("LinkedList");

    Node<T> first = contents;

    contents = contents.getNext();
    count--;

    return first.getItem();
}

由于还需要返回与第一个节点关联的数据,因此需要保留对它的临时引用。我首先调用了它,我认为您需要将head节点添加到您喜欢的list类中,以定义list的第一个节点

public void deleteFront()
{
 if (head!=null)
 head = head.Next;
}

我认为您需要将head节点添加到您喜欢的list类中,以定义list的第一个节点

public void deleteFront()
{
 if (head!=null)
 head = head.Next;
}
用于删除最后一个节点:我觉得很好


删除最后一个节点:我觉得很好。

谢谢这对删除第一个节点非常有效。出于某种原因,我认为我需要一个新节点,因此首先获取第二个节点中的项目,然后将其链接到列表的其余部分。你的方法简单得多。我想我明白了为什么在removeLast中再次返回第一个节点。XD谢谢这对removeFirst非常有效。出于某种原因,我认为我需要一个新节点,因此首先获取第二个节点中的项目,然后将其链接到列表的其余部分。你的方法简单得多。我想我明白了为什么在removeLast中再次返回第一个节点。除息的
public void removeFirst() {
        if (head == null)
              return;
        else {
              if (head == tail) {
                    head = null;
                    tail = null;
              } else {
                    head = head.next;
              }
        }
  }
public T removeFirst() throws EmptyCollectionException {
 if (isEmpty())
    throw new EmptyCollectionException("LinkedList");

Node < T > temp  = contents;

T  next = contents.getNext().getItem();

contents = new Node ( next, contents );
count--;



  return temp.getItem();
}
contents=contents.getNext()
count--;
return next;