📅  最后修改于: 2023-12-03 14:50:21.292000             🧑  作者: Mango
在操作链表的过程中,删除某个节点是一个基本操作。本篇文章将介绍如何删除链表的最后一个节点。
删除链表的最后一个节点需要遍历整个链表,找到最后一个节点并删除。由于单向链表只能从头节点往后找,因此需要额外记录当前节点的前一个节点。
算法步骤如下:
以下是 C++ 版本的代码实现:
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* removeLastNode(ListNode* head) {
if (!head) return head;
if (!head->next) {
delete head;
return nullptr;
}
ListNode* prev = nullptr;
ListNode* curr = head;
while (curr->next) {
prev = curr;
curr = curr->next;
}
delete curr;
if (prev) prev->next = nullptr;
else head = nullptr;
return head;
}
本篇文章介绍了如何删除链表的最后一个节点,需要额外记录前一个节点,遍历链表找到最后一个节点并删除。实现过程需要注意边界条件处理,特别是链表为空和只有一个节点的情况。