📅  最后修改于: 2023-12-03 15:36:20.883000             🧑  作者: Mango
在链表中删除某个项目一般需要找到该项目的位置,然后将该位置的节点与其前后节点连接起来以删除该节点。本文介绍如何在链表中删除最后一次出现的某个项目。
以下是一个基于Python的链表实现以及从链表中删除最后一次出现的项目的代码示例。
class Node:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class LinkedList:
def __init__(self):
self.head = None
def insert(self, val):
node = Node(val)
if self.head is None:
self.head = node
else:
curr = self.head
while curr.next:
curr = curr.next
curr.next = node
def remove_last_occurrence(self, val):
if self.head is None:
return
prev, curr = None, self.head
last_occurrence = None
while curr:
if curr.val == val:
last_occurrence = prev
prev, curr = curr, curr.next
if last_occurrence is None:
self.head = self.head.next
else:
last_occurrence.next = last_occurrence.next.next
def __repr__(self):
res = []
curr = self.head
while curr:
res.append(str(curr.val))
curr = curr.next
return ' -> '.join(res)
使用示例:
linkedList = LinkedList()
linkedList.insert(1)
linkedList.insert(2)
linkedList.insert(3)
linkedList.insert(2)
linkedList.insert(4)
print(linkedList) # 1 -> 2 -> 3 -> 2 -> 4
linkedList.remove_last_occurrence(2)
print(linkedList) # 1 -> 2 -> 3 -> 4
在这个示例中,我们创建一个包含1、2、3、2和4的链表。然后,我们调用remove_last_occurrence
函数,将链表中最后一次出现的2删除。最后,我们打印出修改后的链表,结果是1、2、3和4。
以上就是一个简单的从链表中删除最后一次出现的项目的实现。