首页 > 解决方案 > del 函数在这个程序中是如何执行的?del 函数在这个程序中是如何执行的?del 函数在这个程序中是如何执行的?

问题描述

在这个链表程序中,我不明白 del 函数是如何工作的,尤其是在 while 条件下,有人可以解释一下吗

节点是链表

class newjava {
    public static void main(String[] args)
    {
        Node head= new Node(10);
        head.next = new Node(20);
        head.next.next = new Node(30);
        head.next.next.next = new Node(40);
        del(head);
        printf(head);
    }
    
    static Node del(Node head) {
        if(head==null)   // 
        return null;
        if(head.next==null) return null;   
    
        Node curr = head;
        while(curr.next.next != null)
        curr=curr.next;
        curr.next=null;
        return head;
    
    }
    
    static void printf(Node head)
    {
        while(head!=null) {
            System.out.println(head.data);
            head=head.next;
             
        }
    }
    
}

标签: javalinked-list

解决方案


在此处输入图像描述 理解代码只需要知道两点。

Point 1.
curr.next.next == null时, curr.next 将是列表中的尾节点。

这就是为什么以下代码删除尾节点的原因。

curr.next=null; 

Point 2.
这段代码的目的是找到满足某个条件的第一个当前节点。

Node curr = head;
while(curr.next.next != null) {
  curr=curr.next;
}

条件是“ curr.next.next == null ”。

结论。

第二点的目的是找到尾节点的前一个节点,并将其设置为变量curr

所以curr.next是尾节点,我们将其删除。(第一点)


推荐阅读