双链表的每个节点有两个指针:一个指向后一个节点,另一个指向前一个节点。
通过下图我们可以直观感受双链表:
双链表的节点代码如下:
class Node(): # 每一个节点都是拥有一个内容、两个指针;默认指针为无,需要自己设定
def __init__(self,item):
self.item = item
self.next = None
self.prior = None
双链表的插入
双链表的插入需要两个步骤:
1、把要插入的列表(L)的next指向后一个元素,后一个元素的prior指向L;
2、把L的prior指向前一个元素,前一个元素的next指向L。
通过下图我们可以理解:
插入步骤用代码表示:
# 插入代码
L.next = curNode.next
curNode.next.prior = p
p.prior = curNode
curNode.next = p
双链表的删除
双链表的删除就要简单一些,步骤:
1、要删除元素(L)的前一个元素的next指向后一个元素;
2、L后一个元素的prior指向L的前一个元素。
我们可以通过下图理解:
最后还要记得 del L 哦。不然会占用内存。
删除步骤用代码表示:
# 插入代码
L = curNode.next
curNode.next = L.next
L.next.prior = curNode
del L