class Node(object):
"""双向链表的节点"""
def __init__(self, item):
# item存放数据
self.item = item
# next是下一个节点的标识
self.next = None
# prev是上一个节点的标识
self.prev = None
def remove(self, item):
"""删除节点"""
if self.is_empty():
return
else:
cur = self.__head
# 删除头节点
if cur.item == item:
if cur.next == None:
# 链表只有一个节点
self.__head = None
else:
# 链表有多个节点
cur.next.prev = None
self.__head = cur.next
return
# 删除不是头节点
while cur != None:
if cur.item == item:
cur.prev.next = cur.next
# 未节点不需要执行
if cur.next:
cur.next.prev = cur.prev
break
# 向后移动
cur = cur.next
def search(self, sitem):
"""查找节点是否存在"""
cur = self.__head
# 循环结束 代表指针指向最后一个节点
while cur != None:
if cur.item == sitem:
return True
else:
cur = cur.next
return False
if __name__ == '__main__':
dll = DoubleLinkList()
dll.add(20)
dll.add(30)
dll.insert(1, 66)
dll.insert(2, 77)
dll.remove(30)
dll.travel()
执行结果:
False
66 77 20