有序表就是表中的元素是按一定的逻辑顺序排列的,如按照数字大小排列,或字符的大小排列等等。
使用链表进行一个构造由小到大排列的有序表。当加入新的数据时,需要对当前表中的数据进行比较,找到第一个比自己大的值,然后再插入。当进行搜索时,只要当前值比要搜索值大,则无需进行后面部分的遍历,直接返回False。
class Node:
def __init__(self,item):
self.item=item
self.next=None
#假设有序表的顺序为数值由小到大排列
class orderedList:
def __init__(self,node=None):
self.__head=node
def add(self,item):
node=Node(item)
if self.__head==None:
self.__head=node
return
if item<self.__head.item:
node.next=self.__head
self.__head=node
else:
prev=None
cur=self.__head
while cur!=None:
if item<cur.item:
node.next=cur
prev.next=node
break
else:
prev=cur
cur=cur.next
if cur==None:
prev.next=node
def search(self,item):
if self.__head==None:
return False
cur=self.__head
while cur!=None:
if cur.item==item:
return True
elif cur.item<item:
cur=cur.next
else:
return False
def travel(self):
if self.__head==None:
print(None)
else:
cur=self.__head
while cur!=None:
print(cur.item)
cur=cur.next
验证
ordered=orderedList()
ordered.add(2)
ordered.add(0)
ordered.add(5)
ordered.add(3)
ordered.add(7)
ordered.add(4)
ordered.travel()
print(ordered.search(4))
########输出#########
0
2
3
4
5
7
True