基于类和对象的方式实现单项链表
class Node:
'''节点'''
def __init__(self,elem):
self.elem = elem
self.next = None
class SingleLinkList():
'''单链表'''
def __init__(self,node=None):
self.__head = node
def is_empty(self): #判断链表是否为空
return self.__head==None
def length(self): #链表长度
curr = self.__head #游标,用来遍历节点
count = 0
while curr != None:
count += 1
curr = curr.next
return count
def travel(self): #遍历整个链表
curr = self.__head
while curr != None:
print(curr.elem,end=' ')
curr = curr.next
def append(self,item): #在尾部添加
node = Node(item)
if self.is_empty():
self.__head = node
else:
curr = self.__head
while curr.next != None:
curr = curr.next
curr.next = node
def add(self,item): #在头部添加
curr = self.__head
node = Node(item)
node.next = curr
self.__head = node
def insert(self,pos,item): #在指定位置添加
if pos <= 0:
self.add(item)
else:
node = Node(item)
curr = self.__head
i = 1
while i != pos:
i+=1
curr = curr.next
node.next = curr.next
curr.next = node
def remove(self,item): #删除节点
curr = self.__head
if curr.elem == item:
self.__head = curr.next
else:
while item != curr.next.elem:
curr = curr.next
curr.next = curr.next.next
def search(self,item): #搜索节点
curr = self.__head
while item != curr.elem:
curr = curr.next
if curr.next == None:
return False
else:
return True
#node = Node(100)
#############################测试###########################################
if __name__ == "__main__":
ll = SingleLinkList()
print(ll.is_empty())
print(ll.length())
ll.append(1)
print(ll.length())
ll.append(2)
ll.append(3)
ll.append(4)
ll.travel()
print()
ll.add(0)
ll.travel()
print()
ll.insert(-2,8)
ll.insert(2,9)
ll.travel()
print()
ll.remove(8)
ll.travel()