我有一个链表类,我试图编写一个类函数来删除链表中的任何项目。
示例,如果我的链接列表包含:
1
2
3
4
5
我要删除4,它输出:
1
2
3
5
这是我的代码:
def remove(self,item):
if self.isEmpty():
raise StopIteration("List is empty")
else:
element = self.head
if element.next.item == item:
element.next = element.next.next
self.count-=1
return True
我的代码的问题是,它只考虑它在链表中看到的第一个项目,并一眼就将其删除。
例如,如果我删除1,因为它是第一个元素,它可以工作,但如果我要删除3,程序不会删除该元素。我想知道我是否错过任何导致它不适用于1以外的元素的内容
答案 0 :(得分:1)
您应该遍历所有元素以找到您的项目。你可以通过recurssion(一次又一次地调用remove函数)或循环来完成。此代码显示如何循环
def remove(self,item):
if self.isEmpty():
raise StopIteration("List is empty")
else:
element = self.head
// if 1st element itself
if element.item == item:
self.head = element.next
// other than first
while element.next != null:
if element.next.item == item:
element.next = element.next.next
self.count-=1
return True
element = element.next
return False // return Flase if 'item' is not present in the list