class Node(object):
def __init__(self,elem):
self.elem = elem
self.next = None
class SingleLinkList(object):
"""初始"""
def __init__(self,node=None):
self._head = node
def is_empty(self):
return self._head==None
"""判断空"""
def length(self):
cur = self._head
"""指向的第一个节点"""
count = 0
while cur!=None:
"""非cur.next == None """
count+=1
cur = cur.next
return count
"""遍历"""
def travel(self):
cur = self._head
while cur!=None:
print(cur.elem,end=" ")
cur = cur.next
"""插入"""
def append(self,item):
node = Node(item)
if self.is_empty():
self._head=node
else:
cur = self._head
while cur.next!=None:
cur = cur.next
cur.next = node
"""头插"""
def add(self,item):
node = Node(item)
node.next =self._head
self._head = node
"""指定位置插入"""
def insert(self,pos,item):
if pos<=0:
self.add(item)
elif pos >(self.length()-1):
self.append(item)
else:
pre = self._head
count=0
while i<pos-1 :
pre = pre.next
count+=1
node = Node(item)
node.next=pre.next
pre.next = node
"""查找"""
def search(self,item):
cur = self._head
while cur!=None:
if(cur.elem==item):
return True
else:
"""不用else"""
cur = cur.next
return False
"""删除"""
def remove(self,item):
cur = self._head
pre = None
while cur!=None:
if cur.elem ==item :
"""判断是否头节点"""
if cur == self._head:
self._head = cur.next
"""break 防止死循环"""
else:
pre.next = cur.next
pre = cur
cur = cur.next
ll=SingleLinkList()
print(ll.is_empty())
print(ll.length())
ll.append(1)
ll.append(2)
ll.insert(2,3)
ll.insert(-1,5)
ll.add(4)
print(ll.is_empty())
print(ll.length())
print(ll.search(10))
ll.travel()
ll.remove(2)
ll.travel()
ll.remove(4)
ll.travel()
ll.remove(3)
ll.travel()