一、定义一个单链表节点类
class Node(Object):
def __init__(self,data,next=None): #该方法用于初始化一个类
self.data=data
self.next=next
二、使用单链表节点类
node1=Node('A',None)
node2=Node('B',node1)
node3=Node('C',node3)
三、单链表结构上的操作
class Node():
def __init__(self,item,next=None):
self.__item=item
self.__next=next
def getItem(self):
return self.__item
def getNext(self):
return self.__next
def setItem(self,newitem):
self.__item=newitem
def setNext(self,newnext):
self.__next=newnext
class SingleLinkedList(Node):
def __init__(self):
self.__head=None #初始化链表为空表
self.__size=0
def isEmpty(self): #检测链表是否为空
return self.__head==None
def count(self):
current=self.__head
count=0
while current!=None:
count+=1
current=current.getNext()
return count
def travel(self):
current=self.__head
while current!=None:
print(current.getItem(),end=" ")
current=current.getNext()
print()
def add(self,item): #在链表前端添加元素
temp=Node(item)
temp.setNext(self.__head)
self.__head=temp
def append(self,item): #在链表尾部添加元素
temp=Node(item)
if self.isEmpty():
self.__head=temp #若为空表,将添加的元素设为第一个元素
else:
current=self.__head
while current.getNext()!=None:
current=current.getNext() #遍历链表
current.setNext(temp) #此时current为链表最后的元素
def search(self,item): #检索元素是否在链表中
current=self.__head
while current.getNext()!=None:
if current.getItem()!=item:
current=current.getNext()
else:
return True
return False
def index(self,item): #索引元素在链表中的位置
current=self.__head
count=0
while current.getNext()!=None:
count+=1
if current.getItem()!=item:
current=current.getNext()
else:
return count
return False
def remove(self,item): #删除链表中的某项元素
current=self.__head
pre=current
while current.getNext()!=None:
if current.getItem()!=item:
pre=current
current=current.getNext()
else:
if not pre:
self.head=current.getNext()
else:
pre.setNext(current.getNext())
break
def insert(self,index,item): #链表中插入元素
if index<=1:
self.add(item)
elif index>self.count():
self.append(item)
else:
temp=Node(item)
current=self.__head
count=1
while count<index:
count+=1
pre=current
current=current.getNext()
pre.setNext(temp)
temp.setNext(current)
if __name__=='__main__':
a=SingleLinkedList()
for i in range(1,10):
a.append(i)
a.travel()
print(a.count())
print(a.search(6))
print(a.index(6))
a.remove(6)
a.travel()
a.insert(9,100)
a.travel()