def push_front(self, val): newNode = ListNode(val, None) if self._size == 0: #if list is empty, make element the head and tail self._head = newNode self._tail = newNode newNode.set_next( self._head) #new element's next now points to current head self._head = newNode #update list's head self._size += 1 #update list's size
def insert(self, index, val): if index >= self._size or index < 0: raise IndexError('Invalid index') if index == 0: self.push_front(val) else: newNode = ListNode(val, None) item = self._head for i in range(index - 1): #traverse list to find item at index - 1 item = item.get_next() newNode.set_next(item.get_next()) item.set_next(newNode) self._size += 1