defadd(self, value): ''' 头插法插入元素 :param value: :return: ''' newnode = Node(value, None) newnode.setNext(self.__head.getNext()) self.__head.setNext(newnode) defappend(self, value): ''' 尾插法插入元素 :param value: :return: ''' newnode = Node(value) if self.isEmpty(): self.__head.setNext(newnode) else: current = self.__head.getNext() while current.getNext() != None: current = current.getNext() current.setNext(newnode) defsearch(self, value): ''' 查找链表中是否含有该元素 :param value: :return: ''' current = self.__head foundvalue = False while current != Noneandnot foundvalue: if current.getValue() == value: foundvalue = True else: current = current.getNext() return foundvalue
defindex(self, value): ''' 查找该元素在链表中的下标位置, 若没有则返回None :param value: :return: ''' current = self._head count = 0 found = None while current != Noneandnot found: count += 1 if current.getValue() == value: return count returnNone
defprint(self): ''' 打印链表元素 :return: ''' current = self.__head.getNext() while current != None: print(current.getValue()) current = current.getNext()
defdelete(self, value): ''' 删除指定元素 :param value: :return: ''' current = self._head while current.getNext() != Noneand current.getNext().getValue() != value: current = current.getNext() if current.getNext() == None: return0#链表中无此元素,删除失败 else: r = current.getNext() current.setNext(r.getNext()) del r return1