在Java中删除链表的最后一个节点可以通过以下步骤实现:
以下是示例代码:
public class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode deleteLastNode(ListNode head) {
if (head == null) {
return null;
}
ListNode prev = null;
ListNode curr = head;
while (curr.next != null) {
prev = curr;
curr = curr.next;
}
if (prev == null) {
// 链表只有一个节点
head = null;
} else {
prev.next = null;
}
return head;
}
}
这段代码中,我们定义了一个ListNode类表示链表节点,其中包含一个值val和一个指向下一个节点的指针next。然后,我们定义了一个Solution类,其中的deleteLastNode方法用于删除链表的最后一个节点。
在该方法中,我们首先判断链表是否为空,如果为空则直接返回null。然后,我们创建两个指针prev和curr,分别指向当前节点和当前节点的前一个节点,初始时都指向链表的头节点。接下来,我们使用一个循环遍历链表,直到当前节点的下一个节点为空,循环中将prev指向curr,curr指向下一个节点。循环结束后,prev指向倒数第二个节点,curr指向最后一个节点。最后,我们根据prev是否为空来判断链表是否只有一个节点,如果是,则将头节点置为null;否则,将prev的next指针指向null,即删除了最后一个节点。最后,返回头节点。
这是一个简单的删除链表最后一个节点的实现方法,适用于单向链表。如果是双向链表,删除最后一个节点的方法类似,只需将prev的next指针指向null,并将最后一个节点的prev指针指向null即可。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云