当前位置: 首页 > 面试题库 >

删除链接列表的最后一个节点

汤念
2023-03-14
问题内容

我正在练习使用链表节点,遇到了一个我不知道如何回答的问题。如何删除链接列表中的最后一个节点。下面的代码适用于所有条目的最后一个节点。最后一个不会被删除。

节点类别

public class Node {

    private String data;
    private Node next;

    Node(String data, Node next)
    {
        this.data = data;
        this.next = next;
    }

    public void setData(String d)
    {
        data = d;
    }

    public void setNext(Node n)
    {
        next = n;
    }

    public String getData()
    {
        return data;
    }

    public Node getNext()
    {
        return next;
    }

主要

Node list = new Node("NODE 1",new Node("NODE 2",new Node("NODE 3", null)));
        list = insertSecond(list,"New Node");
        list = addLast(list,"LAST NODE");

        printList(list);
        System.out.println();
        deleteNode(list,"LAST NODE");
        printList(list);    
    }

    public static Node deleteNode(Node list,String str)
    {
        Node temp = list;
        Node prev = list;

        while(temp.getNext() != null)
        {
            if(temp.getData().equals(str))
            {
                if(prev.getNext() == null)
                    prev.setNext(null);
                else{
                prev.setNext(prev.getNext().getNext());
                }

            }
            prev = temp;
            temp = temp.getNext();
        }

问题答案:

我想while(temp.getNext() != null)您的最后一个元素失败了。最后一个元素将没有next元素。因此,不会将最后一个元素与传递的字符串进行比较。您应该使用调试器进行跟踪。



 类似资料:
  • 我有一个头和lastNode的参考。嗨我有个问题。当我删除双向链表中的最后一个节点时,我必须将该节点的前一个引用设置为空,或者我可以离开它。我在删除lastNode时做了这样的事情。 当我使用toString方法时,它会按预期打印。只是想知道是否有必要将旧的last node prev设置为null。或者垃圾收集器只是删除它,因为没有对它的引用,即使旧节点仍然有对链接列表中某个节点的引用

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

  • 以下代码删除双链接列表中的第一个节点。 如果列表只包含1个元素,我们将last的引用设置为null。我的问题是,我们为什么不将first的引用设置为null?这会有什么不同吗?

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

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

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