c++中list链表如何实现输出指定位置的值

c++中list链表如何实现输出指定位置的值就像数组一样输出指定下标的那个值... c++中list链表如何实现输出指定位置的值就像数组一样输出指定下标的那个值 展开
 我来答
心随风飘_无趣
2016-08-17 · 超过15用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:17.6万
展开全部

你好,list 底层是一个链表, 是用指针实现的,所以不能向数组那样直接得到,你可以自己写一个来遍历, 如;

template<typename T>
T get_value(list<T> ls, int index) {
  typename list<T>::iterator iter;
  iter = ls.begin();
  for(int i = 0; i < index; ++i) {
    iter++;
  }
  return *iter;
}
讉莣熔燃氺
推荐于2017-12-16 · TA获得超过450个赞
知道小有建树答主
回答量:376
采纳率:100%
帮助的人:104万
展开全部

对于 list<int > lhead;

  1. 如果你说的是c++里面的库函数list,是没有这样的成员函数的。

2.如果你说的广义的list,一般情况也是没有的。

3.首先你得知道,得到一个list,你只能知道它的头/尾指针,list长度等。因为它在内存中一般不是顺序存取的,所以没法用类似lhead[3]的方法来获取第三个元素。


解决的办法是写一个遍历函数,获取他的第三个元素,形如:

//库函数

int getNum(int num){

    list<int > temp =lhead;

auto iter = temp.begin();

    for(int i=0;i<num;++i){

        if(iter!=temp.end())

                ++iter;

}

return *iter;

}

//自定义函数

public int getNum(int num){

    list<int > temp =lhead;

    for(int i=0;i<num;++i){

        if(temp -> next !=NULL) 

            temp = temp->next;

    }

    return temp->value;

}

4.一般不赞成用list来做这样的操作,因为list获取一个元素时间复杂度O(n),Array获取只需要用下标 array[3]就行了,时间复杂度为O(1)。

追问
array是什么
追答
array就是数组,一般数组都提供了下标操作。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Chiefous
2016-08-17 · 超过13用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:22.2万
展开全部
可以写个函数吧,参数就为int型下标值,然后遍历链表。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
123yangpi
2016-08-17
知道答主
回答量:24
采纳率:0%
帮助的人:8814
展开全部
在元素结构中定义一个记录下标的变量就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-08-17
展开全部
重载下标访问运算符,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式