单链
class Node:
def __init__(self,item=None):
self.item=item
self.next=None
class SingleLink:
def __init__(self):
self.head=None
def is_empty(self):
return self.head==None
def length(self):
current=self.head
count=0
if current !=None:
count+=1
current=current.next
return count
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:
#将指针指向最后一个元素
current=self.head
while current.next!=None:
current=current.next
current.next=node
def insert(self,pos,item):
if pos<=0:
self.add(item)
elif pos>self.length()-1:
self.append(item)
else:
node = Node(item)
per = self.head
count=0
while count<pos-1:
count+=1
per=per.next
node.next=per.next
per.next=node
def remove(self,item):
current=self.head
per=None
while current != None:
if current.item==item:
if current == self.head:
self.head=current.next
else:
per.next=current.next
break
else:
per = current
current=current.next
def seach(self,item):
current = self.head
flag=False
while not flag and current !=None:
if current.item==item:
flag=True
else:
current = current.next
return flag
def index(self,item):
current = self.head
index=0
while current !=None:
if current.item==item:
return index
else:
index+=1
current=current.next
return -1
if __name__=="__main__":
sl=SingleLink()
sl.append(1)
print(sl.is_empty())
print(sl.seach(1))
sl.append(2)
print(sl.index(3))
循环单链