• List(双向链表)


      List是一种双向链表结构,可以从第一个元素开始删除、插入,也可以从最后一个元素删除、插入,下面介绍一下 List 中常用的几个函数;

    一、List 中的 begin 和 end 函数 ;

      和其他几种数据结构差不多,都是用来从第一个元素,访问到最后一个元素,返回的是当前指针;

      list<int>  L ;

      *(L.begin())  // 输出第一个元素

      *(L.end())   // 输出最后一个元素的下一个元素

    二、List 中的 rbegin 和 rend 函数

      也和其他几种数据结构差不多,从最后一个元素访问到第一个元素; 返回值如果需要存入一个变量中,这个变量应该这样定义 

      list<int>::reverse_iterator iter ;

      list<int> L ;

      iter = L.rbegin() ;

      *iter     //  输出最后一个元素

      iter = L.rend() ;

      *iter      // 输出第一个元素前面的一个元素 

    三、List 中的 empty 函数

      list<int>  L ;

      L.empty() ;  // 如果链表为空则返回 true ,否则返回 false ;

    四、List 中的 size 函数

      list<int> L(5 , 10) ;

      L.size() ;   // 返回链表中元素的个数

    五、List 中的 front 和 back 函数

      list<int> L(5,10) ;

      L.front() ;    // 返回第一个元素

      L.back() ;      //  返回最后一个元素

    六、List 中的 assign 函数

      assign 函数用来对链表对象的重新分配 ;

      list<int> L1 ;

      list<int> L2 ;

      L1.assign(5,10) ;    // 向链表中添加 5 个元素 10 ;

      L1.assign(5,11) ;    // 把原来的 5 个元素 10 改为 11 ;

      L2.assign( L1.begin() , L1.end() ) ;   将L1中的元素复制给L2 ;

      int a[] = {1,2,3,4,5} ;

      L2.assign(a,a+5) ;     // 把数组 a 中的数据复制到 L2 中 ; 

    七、List 中的 push_front、push_back、pop_front、pop_back 函数

      这几个函数就是双向链表的特殊之处,可以从头插入、删除,也可以从尾部插入和删除

      list<int> L(5,10) ;

      L.push_back(5) ;  // 从最后插入一个元素 5 ;

      L.pop_back() ;    // 删掉最后一个元素

      L.push_front(5) ;  //在第一个元素前面插入一个元素 5 ;

      L.pop_front() ;   // 将第一个元素删除掉

    八、List 中的 insert 函数

      insert 函数中的参数可以有两个,也可以由三个,当参数有两个时,第一个代表在某个元素的前面,第二个参数代表要插入的数值;

      当参数有三个时,第一个代表在某个元素之前插入,第二个元素和第三个元素代表要插入的范围;

      list<int> L(5,10) ;

      L.insert(L.begin(),5) ;      //在第一个元素前插入一个元素 5 ;

      L.insert(L.begin(),5,2) ;     // 在第一个元素前插入 5 个元素 2 ;

      int a[] = {8,2,3,4,5} ;    

      L.insert(L.begin(),a,a+5) ;        // 将数组 a 插入到第一个元素之前 ;

    九、List 中的 erase 函数 

      erase 用来删除链表中的数据元素

      list<int> L(5,10) ;

      L.erase(L.begin()) ;  //删除链表中的第一个元素

      L.erase( L.begin() , L.end() )  // 删除链表中的所有元素,相当于 L.assign(0) ;

    十、List 中的 resize 函数

      resize 和 其他数据结构一样,重新分配链表的大小 ;

      list<int> L(5,10) ;

      L.resize(3) ;    // 将链表中原来的 5 个元素,缩短为现在的 3 个元素 ;

      L.resize(8) ;    // 将链表中原来的 3 个元素,扩大为现在的 8 个元素,扩大部分默认赋初值为 0 ;

      L.resize(10,2) ;    // 将链表中原来的 8 个元素,扩大为现在的 10 个元素,扩大部分赋值为 2 ;

    十一、List 中的 clear 函数

      list<int> L(5,10) ;

      L.clear() ;      //  清空链表中的所有元素, 相当于L.assign(0) , 还相当于L.erase(L.begin() , L.end()) ;

  • 相关阅读:
    汉语-词语:关怀
    心理学-交流:我真的关心ta,却不知道如何表达 | 如何科学地表达关心?
    汉语-词语:关心
    汉语-词语:安慰
    医疗时鲜资讯:医疗行业未来的变革(续前篇)
    字典转模型的过程中,空值和id特殊字符的处理
    最简单的基于FFmpeg的移动端样例附件:Android 自带播放器
    创建存储过程向表中循环加入数据
    分布式事务 原理及使用范例一则
    hdu 1166
  • 原文地址:https://www.cnblogs.com/scottding/p/3665573.html
Copyright © 2020-2023  润新知