def add(self, data): newNode = Node(data) if self.isEmpty(): self.__head = newNode else: newNode.setNext(self.__head) self.__head.setPrev(newNode) self.__head = newNode
def append(self, data): newNode = Node(data) if self.isEmpty(): self.add(data) else: newNode.setNext(self.__head) # head的前驱就是链表尾部 newNode.setPrev(self.__head.getPrev()) self.__head.getPrev().setNext(newNode) self.__head.setPrev(newNode)
def insert(self, data, pos=0): if pos <= 0: self.add(data) elif pos > self.size() - 1: self.append(data) else: newNode = Node(data) preHead = self.__head count = 0 # preHead指向指定位置前一个位置pos-1 while count < pos - 1: count += 1 preHead = preHead.getNext() newNode.setPrev(preHead) newNode.setNext(preHead.getNext()) preHead.getNext().setPrev(newNode) preHead.setNext(newNode)