从链接列表中删除项目

时间:2017-09-20 13:54:09

标签: python class

我有一个链表类,我试图编写一个类函数来删除链表中的任何项目。

示例,如果我的链接列表包含:

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以外的元素的内容

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