直接看代码:
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:
count+=1
cur=cur.next
return count
def travel(self): #遍历单链表
cur=self.__head
while cur!=None:
print(cur.elem,end="")
cur=cur.next
print("")
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!=None:
cur=cur.next
cur.next=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 count<(pos-1):
count+=1
pre=pre.next
node=Node(item)
node.next=pre.next
pre.next=node
def remove(self,item): #删除元素
cur=self.__head
pre=None
while cur!=None:
if cur.elem==item:
if cur.elem==self.__head:
self.__head=cur.next
else:
pre.next=cur.next
break
else:
pre=cur
cur=cur.next
def seach(self,item): #查找元素
cur=self.__head
while cur!=None:
if cur.elem==item:
return True
else:
cur=cur.next
return False
if __name__=="__main__": #主函数
sll=SingleLinkList()
print(sll.is_empty())
print(sll.length())
sll.add(1)
sll.add(2)
sll.add(3)
print(sll.is_empty())
print(sll.length())
sll.travel()
代码虽然看起来很多,但是单链表的操作基本都实现了。Python真的很简便(Python使人“堕落”)。