May 2017
Intermediate to advanced
310 pages
8h 5m
English
We may think that we can follow the same principle as for append and simply make sure the head points to the tail. This would give us the following implementation:
def delete(self, data): current = self.tail prev = self.tail while current: if current.data == data: if current == self.tail: self.tail = current.next self.head.next = self.tail else: prev.next = current.next self.size -= 1 return prev = current current = current.next
As previously, there is just a single line that needs to change. It is only when we remove the tail node that we need to make sure that the head node is updated to point to the new tail node.
However, there is a serious problem with this code. In the case of a circular list, we cannot ...