python 实现双向链表
class Item(object):
def __init__(self,data,last=None,next=None,):
self.data = data
self.last = last
self.next = next
class LinkedList(object):
def __init__(self):
self.head = Item({},)
def add(self,data):
sign = self.head
while True:
if sign.next == None:
break
sign = sign.next
body = Item(data,last=sign)
sign.next = body
def move(self,keyword,keyvalue):
sign = self.head.next
status = True
while True:
try:
if keyvalue == sign.data[keyword]:
break
except KeyError as e:
print('Key1Error:数据中不存在%s' %e )
return False
if sign.next == None:
status = False
break
sign = sign.next
if status:
sign.last.next = sign.next
if sign.next != None:
sign.next.last = sign.last
sign.last = None
return True
else:
return False
def update(self,data,keyword=None,keyvalue=None):
if keyword:
sign = self.head.next
status = True
while True:
try:
if keyvalue == sign.data[keyword]:
break
except KeyError as e:
print('Key1Error:数据中不存在%s' % e)
return False
if sign.next == None:
status = False
break
sign = sign.next
if status:
sign.data = data
return True
else:
return False
def get(self,index):
res = self.get_all()
try:
return res[index]
except:
return None
def get_all(self):
sign = self.head
res = []
while True:
if sign.next == None:
if sign.data:
res.append(sign.data)
break
else:
if sign.data:
res.append(sign.data)
sign = sign.next
return res
def size(self):
return len(self.get_all())