append 是要在链表尾部加节点,我这么写:
def append(self, item):
if self.length == 0:
node = Node(item)
self.head = node
self.tail = node
self.length = 1
return
node = Node(item)
tail = self.tail
tail.next = node
node.prev = tail
self.tail = node
self.length += 1
if 语句块用来添加第一个node;
然后不是if情况,给原尾节点加next,新尾节点加prev。
insert 用来插入node的
def insert(self, index, item):
length = self.length
if (index<0 and abs(index)>length) or (index>0 and index>=length):
return False
if index < 0:
index = index + length
if index == 0:
node = Node(item)
if self.head != None:
self.head.prev = node
else:
self.tail = node
node.next = self.head
self.head = node
self.length += 1
return True
if index == length - 1:
return self.append(item)
node1 = self.head
for i in range(0, index):
node1 = node1.next
node2 = node1.next
node = Node(item)
node.prev = node1
node.next = node2
node1.next = node
node2.prev = node
self.length += 1
return True
感觉最复杂的就是头尾节点的地方,每个人都有不同的实现,仅供参考