class Node(object):
def __init__(self,value=None,next=None):
self.value = value
self.next = next
#输出一个链表
def Printlinklist(node):
while node:
print(node.value)
node = node.next
#逆序输出一个链表
def printBackward(node):
if node.next is None:
print(node.value)
return
printBackward(node.next)
print(node.value)
return None
#计算链表都长度
class LinkList(object):
def __init__(self,head):
self.head = head
def __len__(self):
count =0
if self.head is None:
return 0
node = self.head
while node:
count+=1
node=node.next
return count
#插入数据
def append(self,node):
if self.head is None:
self.head = node
else:
cur_node = self.head
while cur_node.next is not None:
cur_node = cur_node.next
cur_node.next = node
#插入数据2
def insertToFront(self, data):
if self.head is None:
self.head = Node(data)
else:
tmp = self.head
self.head = Node(data)
self.head.next =tmp
return self.head
#查找数据
def find(self,value):
if self.head is None:
return None
else:
cur_node = self.head
while cur_node:
if cur_node.value == value:
return cur_node
cur_node = cur_node.next
return None
#删除
def del_value(self,value):
if self.head is None:
return None
elif self.head == value:
self.head = self.head.next
else:
cur_node = self.head
before_node = self.head
while cur_node:
if cur_node == value:
before_node.next = cur_node.next
return cur_node
before_node = cur_node
cur_node = cur_node.next
return None
def get_all(self):
data=[]
if self.head is None:
return data
else:
cur_node = self.head
while cur_node:
data.append(cur_node.value)
cur_node = cur_node.next
return data