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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中list链表如何实现输出指定位置的值相关的知识,希望对你有一定的参考价值。

c++中list链表如何实现输出指定位置的值就像数组一样输出指定下标的那个值

你好,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;

参考技术A

对于 list<int > lhead;

    如果你说的是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就是数组,一般数组都提供了下标操作。

参考技术B 可以写个函数吧,参数就为int型下标值,然后遍历链表。 参考技术C 在元素结构中定义一个记录下标的变量就可以了。 参考技术D 重载下标访问运算符,

以上是关于c++中list链表如何实现输出指定位置的值的主要内容,如果未能解决你的问题,请参考以下文章

c++中怎么确定list 容器里的元素的位置 求高手解答 在线等答案

C++ 单链表

C++ - 使用 std::list,如何打印对象私有成员的链表?

c++:list模拟实现“任意位置插入删除我最强ƪ(˘⌣˘)ʃ“

Leetcode No.21 Merge Two Sorted Lists合并两个有序链表(c++实现)

C++ STL应用与实现6: 如何使用std::list