class Node(object):
def __init__(self,elem):
"""创建结点类"""
self.elem = elem
self.next = None
class Singlelist(object):
"""创建链表类"""
def __init__(self,node = None):
self.__head= node
def is_empty(self):
"""判断链表是否为空"""
return self.__head is None
def length(self):
"""长度测试"""
cur =self.__head
count=0
while cur is not None:
count+=1
cur =cur.next
return count
def travel(self):
"""遍历"""
cur =self.__head
while cur is not None:
print(cur.elem,end=" ")
cur=cur.next
def head_add(self,item):
""""头插法"""
node=Node(item)
cur=self.__head
node.next=self.__head
self.__head=node
def tail_add(self,item):
"""尾插法"""
cur = self.__head
node = Node(item)
if self.is_empty():
self.__head = node
else:
while cur.next is not None:
cur = cur.next
cur.next = node
def insert(self,pos,item):
"""按位置插入"""
if self.is_empty():
self.head_add(item)
elif pos > self.length()-1:
self.tail_add(item)
else:
node = Node(item)
pre = self.__head
count = 0
while count < pos-1:
count +=1
pre = pre.next
node.next = pre.next
pre.next = node
def search(self,item):
"""搜索"""
cur = self.__head
while cur is not None:
if cur.elem == item:
return True
else:
cur = cur.next
return False
def remove(self,item):
"""删除"""
pre =None
cur=self.__head
while cur is not None:
if cur.elem == item:
if cur==self.__head:
self.__head=cur.next
else:
pre.next=cur.next
break
else:
pre = cur
cur = cur.next
if __name__ == "__main__":
l = Singlelist()
l.tail_add(1)
l.tail_add(2)
l.head_add(3)
l.head_add(4)
l.insert(2,5)
l.remove(3)
l.travel()
print(l.length())