- 基本定义
有序表是一种数据项依照其某科比性质(如整数大小、字母表先后)来决定在列表中的位置。越小的数据越靠近列表的头,越靠前。
- 基本属性
orderedList() |
创建一个有序表 |
add(item) | 加入一个数据项,并保持整体顺序 |
remove(item) | 从有序表中移除一个数据项,有序表被修改 |
search(item) | 查找数据项,返回bool类型 |
isEmpty() | 是否空表 |
size() | 返回表中数据项的个数 |
index(item) | 返回数据项在表中的索引 |
pop() | 移除有序表最后一项 |
pop(pos) | 移除指定项 |
- 用链表实现有序表
这里需要注意的是有序表数据项的相对位置,取决于它们之间的“大小”比较。
1 from node import Node 2 class OrderedList(): 3 def __init__(self): 4 self.head = None #这里首先需要定义无须表的表头head属性,保存对第一个节点对的引用空表head为None. 5 def isEmpty(self): 6 return self.head == None 7 def add(self, item): 8 current = self.head 9 previous = None 10 stop = False 11 while current != None and not stop: 12 if current.getData() > item: 13 stop = True 14 else: 15 previous = current 16 current = current.getNext() 17 temp = Node(item) 18 if previous == None: 19 temp.setNext(self.head) 20 self.head = temp 21 else: 22 temp.setNext(current) 23 previous.setNext(temp) 24 25 def size(self): 26 current = self.head 27 count = 0 28 while current != None: 29 count += 1 30 current = current.getNext() 31 return count 32 33 def search(self,item): 34 current = self.head 35 found = False 36 while current != None and not found: 37 if current.getData() == item: 38 found = True 39 else: 40 if current.getData() > item: 41 stop = True 42 else: 43 current = current.getNext() 44 return found 45 46 s = OrderedList() 47 s.add(5) 48 s.add(6) 49 s.add(7) 50 s.add(6) 51 print(s.head.getData())