1.双向链表(无哨兵):
#linked_list链表
class Linked_list(object):
def __init__(self):
self.head = None
#insert方法将obj连接到链表前端:
def insert(self,obj):
if isinstance(obj,list_obj):
obj.next = self.head
if self.head != None:
self.head.prev = obj
self.head = obj
obj.prev = None
else:
print('请输入合法对象!')
#delete方法将obj删除:
def delect(self,obj):
if isinstance(obj,list_obj):
if obj.prev != None:
obj.prev.next = obj.next
else:
self.head = obj.next
if obj.next != None:
obj.next.prev = obj.prev
else: print('链表中找不到此元素!')
#search方法查询key为k的链表对象:
def search(self,key):
x = self.head
while x.key != key and x != None:
x = x.next
return x
#输出链表:
def print_list(self):
x = self.head
while x != None:
print(x,end=' -> ')
x = x.next
print(None)
#链表元素:
class list_obj(object):
def __init__(self,key,prev=None,next=None):
self.key = key
self.prev = prev
self.next = next
def __str__(self):
return str(self.key)
l = Linked_list()
#链表插入
obj1 = list_obj(1)
l.insert(obj1)
obj2 = list_obj({'key':2})
l.insert(obj2)
l.print_list()
#链表查找
print(type(l.search(1)))
#链表删除
l.delect(obj2)
l.print_list()
l.delect(obj1)
l.print_list()