class Node: def __init__(self, data): self.data = data self.next = None class CircularLinkedList: def __init__(self): self.last = None def addToEmpty(self, data): if self.last != None: return self.last newNode = Node(data) self.last = newNode self.last.next = self.last return self.last def addFront(self, data): if self.last == None: return self.addToEmpty(data) newNode = Node(data) newNode.next = self.last.next self.last.next = newNode return self.last def addEnd(self, data): if self.last == None: return self.addToEmpty(data) newNode = Node(data) newNode.next = self.last.next self.last.next = newNode self.last = newNode return self.last def addAfter(self, data, item): if self.last == None: return None newNode = Node(data) p = self.last.next while p: if p.data == item: newNode.next = p.next p.next = newNode if p == self.last: self.last = newNode return self.last else: return self.last p = p.next if p == self.last.next: print(item, "The given node is not present in the list") break def deleteNode(self, last, key): if last == None: return