来源:我的博客站 OceanicKang |《C++ 数据结构(三)列表(2)无序列表》
秩到位置
是否可以模仿向量的循秩访问
方式?
可以,比如,通过重载下标操作符
template <typename T> // assert: 0 <= r < size
T List<T>::operator[](Rank r) const {
// O(r),效率低下,可偶尔为之,却不宜常用
Posi(T) p = first(); // 从首节点出发
while (0 < r--) p = p -> succ; // 顺数第 r 个节点
return p -> data; // 目标节点
} // 任一节点的秩,亦即其前驱的总数
查找
在节点 p
(可能是 trailer
)的 n
个(真)前驱中,找到等于 e
的最后者
template <typename T> // 从外部调用时,0 <= n <= rank(p) < _size
Posi(T) List<T>::find(T const &e, int n, Posi(T) p) const {