C++ 数据结构(三)列表(2)无序列表

本文详细探讨了C++中无序列表的数据结构,包括如何通过重载下标操作符实现秩到位置的转换,查找指定元素的算法,插入、删除操作的实现,以及列表的复制和析构过程。同时,提到了列表的唯一化处理。
摘要由CSDN通过智能技术生成

来源:我的博客站 OceanicKang |《C++ 数据结构(三)列表(2)无序列表》

上一篇:《C++ 数据结构(三)列表(1)接口与实现》

秩到位置

是否可以模仿向量的循秩访问方式?

可以,比如,通过重载下标操作符

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 {
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值