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

从单链表中删除最后一个节点(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。 要删除第一个节点,使用以下函数:

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

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

  • 问题内容: 这段代码是一个表,可以选择“惰性名称”,“删除”,“显示”和“退出”。 该代码运行良好,但是我唯一的问题是如何删除节点中的所选名称 *我不知道如何删除节点。我应该在删除方法上加上什么? 问题答案: 要删除Node,您实际上需要更新它的上一个节点的位置以删除Node的位置,而剩下的Node最终将被垃圾回收。 如果要删除的节点是根节点,则只有一个问题,然后更新根节点。