前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线性表——链式描述(双向链表)

线性表——链式描述(双向链表)

作者头像
青木
发布2018-05-28 15:43:43
4350
发布2018-05-28 15:43:43
举报

双链表的迭代器类:

代码语言:javascript
复制
template<class T>
class iterator
{
public:
    //向前迭代
    typedef forward_iterator_tag iterator_category;
    typedef T value_type;
    typedef ptrdiff_t difference_type;
    typedef T* pointer;
    typedef T& reference;

    //构造函数
    iterator(chainNode<T> * theNode = NULL)
    {
        node = theNode;
    }
    //解引用操作符
    T& operator*() const
    {
        return node->element;
    }
    T* operator->() const
    {
        return &node->element;
    }

    //迭代器加法操作
    iterator& operator++()//前加
    {
        node = node->next;
        return *this;
    }
    iterator operator++(int)//后加
    {
        iterator old = *this;
        node = node->next;
        return old;
    }

    //相等检验
    bool operator != (const iterator right) const
    {
        return node != right.node;
    }
    bool operator == (const iterator right) const
    {
        return node == right.node;
    }
    protected:
    chainNode<T>* node;

};

iterator begin()
{
    return iterator(firstNode);
}

iterator end()
{
    return irerator(NULL);
}

使用迭代器访问链表元素和get()方法访问元素,时间效率有很大的差别: get()函数:O(listSize²) 迭代器:O(listSize)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档