classOrderedList:def__init__(self):
self.head =NonedefisEmpty(self):return self.head ==Nonedefsize(self):
count =0
current = self.head
while current !=None:
current = current.getNext()
count +=1return count
defremove(self, item):
current = self.head
previous =None
found =Falsewhilenot found and current !=None:if current.getData()== item:
found =Trueelse:
previous = current
current = current.getNext()if previous ==None:
self.head = current.getNext()else:
previous.setNext(current.getNext())defadd(self, item):'''和无序表不同'''
temp = Node(item)
previous =None
current = self.head
stop =Falsewhile current !=Noneandnot stop:if current.getData()> item:
stop =Trueelse:
previous = current
current = current.getNext()if previous ==None:
temp.setNext(self.head)
self.head = temp
else:
temp.setNext(current)
previous.setNext(temp)defsearch(self, item):'''和无序表不同,引入了提前终止条件(列表是升序)'''
current = self.head
stop =False
found =Falsewhilenot found and current !=Noneandnot stop:if current.getData()== item:
found =Trueelse:if current.getData()< item:
current = current.getNext()else:
stop =Truereturn found
defpop(self, pos=None):if self.isEmpty():print("list is empty")elif pos ==None:
current = self.head
previous =None
pre_previous =Nonewhile current !=None:
pre_previous = previous
previous = current
current = current.getNext()
pre_previous.setNext(current)else:
current = self.head
previous =Nonefor i inrange(pos):
previous = current
current = current.getNext()
previous.setNext(current.getNext())defindex(self, item):
current = self.head
count =0
found =Falsewhilenot found and current !=None:if current.getData()== item:
found =Trueelse:
current = current.getNext()
count +=1return count