当前位置: 首页 > 知识库问答 >
问题:

从单链表中删除最后一个节点(java)

经博延
2023-03-14

公共类LinkedList11{//私有内部类节点

private class Node{
    int data;
    Node link;


    public Node(){
        data = Integer.MIN_VALUE;
        link = null;
    }

    public Node(int x, Node p){
        data = x;
        link = p;
    }
}
// End of Node class

public Node head;

public LinkedList11(){
    head = null;
}

public int deleteLast() throws NoSuchElementException {


    if ( head == null )   //handle when list is empty
    { throw new NoSuchElementException();}

     if(head.link == null)  //handle when head is the only node
     { return head.data;


        }

        Node position = head;
        Node temp = head;   //temp has to be initialized to something 
        int dataAtEnd =0;
        while (position != null)
        {   dataAtEnd = position.data;    
            temp =position;               //safe keep current position
           position = position.link;     //update position pointer to get the next value  
          }

       position =temp;  // store current position in next position
       return dataAtEnd;

}

}

共有1个答案

云隐水
2023-03-14

首先,如果head是唯一的节点,并且要删除它,则需要将head设置为null。

if(head.link == null) {
    int result = head .data;
    head = null;
    return result;
}

在检查head是否是唯一的节点后,尝试如下所示:

Node current = head;
while (current.link.link != null)
    current = current.link;
int result = current.link.data;
current.link = null;
return result;

您需要查看前面的步骤,以检查下一个节点是否是最后一个节点,并从最后一个节点之前的节点中删除最后一个节点。我希望你明白,我的意思,为错别字道歉

 类似资料:
  • 我正在尝试从单链接列表中删除最后一个节点。但我仍然无法在代码中解决此错误。我的方法没有删除最后一个节点。调用delete方法后,它仍然显示我要删除的节点。列表的其余部分将被删除,但最后一个节点本身不会被删除。你能告诉我我遗漏了什么,或者错误在哪里吗? LinkedList: 列表: 节点:

  • 问题内容: 我正在练习使用链表节点,遇到了一个我不知道如何回答的问题。如何删除链接列表中的最后一个节点。下面的代码适用于所有条目的最后一个节点。最后一个不会被删除。 节点类别 主要 问题答案: 我想您的最后一个元素失败了。最后一个元素将没有元素。因此,不会将最后一个元素与传递的字符串进行比较。您应该使用调试器进行跟踪。

  • 我正在用C语言创建一个单链表,它有头部和尾部指针,其中头部指针指向SLL的起始节点,尾部指针指向SLL的最后一个节点。我不想使用head指针遍历到列表末尾来删除节点。有没有办法让我可以使用尾指针删除SLL的最后一个元素? 下面是节点添加函数。头部和尾部初始化为NULL。 要删除第一个节点,使用以下函数:

  • 我正在做一个双链表的实现。我希望链表有一定的长度限制。当列表变长时,删除最后一个节点。我这里有些问题。我想定义尾巴,这样我就不必寻找终点。下面是我正在研究的实现,它将允许长度为4,然后开始删除最后一个节点。 它似乎在删除最后一个节点,但之后会打印一些奇怪的符号。我猜这是我如何释放的问题,但我想不出来。注意:此代码中的一些代码取自https://gist.github.com/mycodeschoo

  • 我在以递归方式从循环单链表中删除单个节点/值时遇到了一些问题(当然,如果可能的话)。我的代码只从中间删除,而不是从第一个或最后一个地方删除。 在以递归方式删除其中一个连接后,我不知道如何建立连接。我的意思是,如果我要删除第一个元素,那么我需要将最后一个节点连接到下一个节点。 这是我的代码: 参数和返回: 查找尾部功能:

  • 我的问题是,如果用户输入一个姓氏,并且在链接列表中有多个相同的姓氏,并且其中一个姓氏在head节点中。如何在不删除头部节点的情况下删除另一个姓氏。我尝试了一些我能想到的方法,但是删除了所需的节点(这很好),包括头部节点(这不是我想要的…)