Example #1
0
    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)
Example #3
0
    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)