java - 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;
}
}
}
解决方案
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是尾节点,我们将其删除。(第一点)
推荐阅读
- python - 为 Tesseract OCR 清理照片的方法?
- java - java - 无法访问将方法返回给另一个方法的java?
- javascript - 如何对不同类别的 Select2 标签进行分组
- python-3.x - 尝试使用创建表单时,{{form.as_table}} 的 django 模板出错
- c# - 仅修剪包含某些单词的字符串并将它们添加到 c# 中的字符串列表中
- c++ - 如何在两个 STL 容器之间移动 unique_ptr 对象
- powerbi - 我们可以为某些用户关闭 RLS 吗?
- sql - Laravel Eloquent 中有一些 WITH 子句?
- jquery - 猫头鹰轮播限制点分页
- python - 计算 ID 在随后的 180 天内出现的次数