# 定义节点
class Node():
def __init__(self,item):
self.item=item
self.next=None
# 单链表实现
class SingleLinkList():
# 定义头节点
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.item,end='')
cur=cur.next
print('')
# 搜索节点
def search(self,item):
cur=self.__head
while cur is not None:
if cur.item==item:
return True
cur=cur.next
return False
# 头部增加节点
def add(self,item):
node=Node(item)
node.next=self.__head
self.__head=node
# 尾部增加节点
def append(self,item):
node=Node(item)
if self.is_empty():
self.__head=node
else:
cur=self.__head
while cur.next is not None:
cur=cur.next
cur.next=node
# 指定位置插入
def insert(self,pos,item):
node=Node(item)
if pos<=0:
self.add(item)
elif pos>=self.length():
self.append(item)
else:
cur=self.__head
count=0
while count<(pos-1):
cur=cur.next
count+=1
node.next=cur.next
cur.next=node
# 删除节点
def remove(self,item):
cur=self.__head
pre=None
while cur is not None:
if cur.item==item:
if cur==self.__head:
self.__head=cur.next
else:
pre.next=cur.next
return
pre=cur
cur=cur.next
if __name__ == '__main__':
ll=SingleLinkList()
for i in range(2):
ll.append(i)
print(ll.length())
ll.travel()
ll.insert(5,7)
ll.travel()
ll.remove(4)
ll.travel()