删除单链表中最后一个与给定值相等的结点
时间: 2023-04-20 18:00:16 浏览: 70
首先需要遍历整个单链表,找到最后一个与给定值相等的结点。可以使用两个指针,一个指向当前结点,一个指向当前结点的下一个结点,依次遍历整个链表,直到找到最后一个与给定值相等的结点。
找到最后一个与给定值相等的结点后,需要删除该结点。可以使用一个指针指向当前结点的前一个结点,然后将该结点从链表中删除即可。
具体实现可以参考以下代码:
```
void deleteLastNode(ListNode* head, int val) {
ListNode* prev = nullptr;
ListNode* curr = head;
ListNode* last = nullptr;
while (curr != nullptr) {
if (curr->val == val) {
last = curr;
}
prev = curr;
curr = curr->next;
}
if (last != nullptr) {
if (last == head) {
head = head->next;
} else {
prev->next = last->next;
}
delete last;
}
}
```
其中,head 表示单链表的头结点,val 表示给定的值。首先将 prev、curr、last 指针初始化为 nullptr 和 head,然后依次遍历整个链表,找到最后一个与给定值相等的结点。如果找到了该结点,就将其从链表中删除,否则不做任何操作。最后返回删除后的单链表头结点。