class node: def __int__(self,prev=None,data=None,next=None): self.prev=prev self.data=data self.next=next class doublelinkedlist: def __int__(self): self.head=None #INSERTION BEGNING FOR DOUBLE LINKED LIST: def __insertion_at_begning(self,data): if self.head is none: self.head=Node(self.none,data,self.none) return self.head=Node(prev,data,self.head) self.head.next.prev=self.head #FUNCTION EMPTY-LIST def is_empty(self): if self.head==None: return self.head==None #INSERTION AT BEGNING FOR EMPTY LIST USING DOUBLE LINKED LIST def __insertion_at_begning(self,data): node=Node(none,data,self.head) if not self is empty(): self.head.prev=node self.head=node #INSERTION AT END USING DOUBLE LINKED LIST: def __insertion_at_end(self,data): if self.head is None: self.head=Node(None,data,None) return itr=self.head while itr.next: itr.next=Node(itr,data,None)