class DoubleLink(): #自定义一个双链表,这个双链表包括数据,前指针后后指针。
def __init__(self, num_data):
self.item = num_data #双链表中的数据项
self.prev = None #双链表中的前指针
self.next = None #双链表指针中的后指针
class DoubleList(): #开始双链表操作
def __init__(self):
self.head = None #初始化一个头节点
def is_empty(self): #判断头节点是否为空
return self.head is None
def add(self, item): #往链表中添加数据
temp = DoubleLink(item) #自定义一个节点
temp.prev = self.head #temp的前指针指向头节点
temp.next = self.head #temp的后指针指向头节点
self.head = temp #头节点指向temp
def append(self, item): #往链表的任意一项插入节点
temp = DoubleLink(item)
if self.is_empty(): #判断节点是否为空,如果为空则直接加入,否则就循环遍历
self.head = temp
temp.prev = self.head
else:
cur = self.head
while cur.next != None:
cur = cur.next
cur.next = temp
temp.prev = cur
def size(self): #计算你创造链表的大小
cur = self.head
count = 0
while cur != None:
count += 1
cur = cur.next
return count
def travel(self): #循环遍历链表
cur = self.head
while cur != None:
print(cur.item)
cur = cur.next
def search(self, item): #查找链表中的某一项是否存在
cur = self.head
bool = False
while cur != None and not bool: #循环条件是bool为True时和cur=None时终止循环
if cur.item == item:
return True #如果查找的数据项存在,则返回True,否则继续查找
else:
cur = cur.next
return bool
def insert(self, item, data): #往双链表中插入某一数据项
cur = self.head #这里要设置两个节点,一个是cur节点,另一个是previous节点。
previous, found = None, False
while cur != None and not found:
if cur.item == item:
found = True
else:
previous = cur
cur = cur.next
temp = DoubleLink(data)
if previous == None:
temp.prev = self.head
temp.next = self.head
self.head = temp
else:
temp.next = cur
cur.prev = temp
previous.next = temp
temp.prev = previous
def remove(self, item): #删除双链表中的你想删除的数据项
cur = self.head
previous, found = None, False
while cur != None and not found:
if cur.item == item:
found = True
else:
previous = cur
cur = cur.next
if previous == None:
self.head = cur.next
cur.next.prev = self.head
else:
previous.next = cur.next
cur.next.prev = cur.prev
d = DoubleList()
d.add("head")
d.add('丝袜')
d.add('打底袜')
d.add('连裤袜')
d.add('过膝袜')
d.append('拼接袜')
d.travel()