In [25]:
class Node:
    def __init__(self, data, prev = None, next = None):
        self.data = data
        self.prev = prev
        self.next = next

class List:
    def __init__(self):
        self.head = Node("head")
        self.head.next = self.head
        self.head.prev = self.head
    
    def find(self, k):
        cur = self.head.next
        while cur.data != "head" and cur.data != k.data:
            cur = cur.next
        return cur
    
    def insert(self, k):
        k.prev = self.head
        k.next = self.head.next
        k.next.prev = k
        self.head.next = k
        
    def print(self):
        cur = self.head.next
        while cur.data != "head":
            print(cur.data, end=' ')
            cur = cur.next
        print()
        
    def delete(self, k):
        k.prev.next = k.next
        k.next.prev = k.prev

In [29]:
myList = List()

myList.insert(Node("First"))
myList.print()
myList.insert(Node("Second"))
myList.print()
myList.insert(Node("Third"))
myList.print()
myList.delete(myList.find(Node("Third")))
myList.print()
myList.delete(myList.find(Node("Second")))
myList.print()
myList.delete(myList.find(Node("First")))
myList.print()


First 
Second First 
Third Second First 
Second First 
First 


In [ ]: