数据结构与算法(10)——有序表OrderedList

  • 基本定义

有序表是一种数据项依照其某科比性质(如整数大小、字母表先后)来决定在列表中的位置。越小的数据越靠近列表的头,越靠前。

  •  基本属性

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())

参考:https://www.bilibili.com/video/BV1QJ411w7bB?p=29

猜你喜欢

转载自www.cnblogs.com/yeshengCqupt/p/12617186.html