zoukankan      html  css  js  c++  java
  • 使用STL中的list容器实现单链表的操作

    #include<iostream>
    #include<list>
    #include<algorithm>
    using namespace std;
    void Print(int &item)
    {
      cout<<item<<" ";
    }
    int main()
    {
      list<int> listintegers;
      list<int>::iterator listiter;  //引入迭代器
    
      //------------头插法插入元素-------------
      listintegers.push_front(5);
      listintegers.push_front(3);
      listintegers.push_front(1);
      listintegers.push_front(2);
      listintegers.push_front(4);
    
       //----------尾插法插入元素----------
      listintegers.push_back(6);
      listintegers.push_back(8);
      listintegers.push_back(7);
    
      //--------使用list的成员函数insert()插入元素到链表中
      listintegers.insert(listintegers.end(),10);
      listintegers.insert(listintegers.end(),9);
    
    
    
    
      //----------利用迭代器输出链表-----------
      /* 我们在每一个算法中都使用一个或多个iterator。

    我们使用它们来存取容器中的对象。 要存取一个给定的对象,我们把一个iterator指向它,然后间接引用这个iterator */ cout<<"链表为:"; for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++) { cout<<*listiter<<" "; } cout<<endl; //-------利用STL通用算法for_each()输出链表--------------- /* Print是个函数,实现对象的输出功能 */ cout<<"链表为:"; std::for_each(listintegers.begin(),listintegers.end(),Print); cout<<endl; //------利用STL通用算法find()推断链表中是否存在某元素---------- listiter=find(listintegers.begin(),listintegers.end(),6); if(listiter==listintegers.end()) { cout<<"6 is not in list"<<endl; } else { cout<<"6 is in list"<<endl; } //-------利用STL通用算法search()推断链表中是否存在某个序列------- list<int> targetlist; targetlist.push_front(2); targetlist.push_front(1); //定义该序列为12 listiter=search(listintegers.begin(),listintegers.end(),targetlist.begin(),targetlist.end()); if(listiter==listintegers.end()) { cout<<"序列12 is not in list"<<endl; } else { cout<<"序列12 is in list"<<endl; } //使用list的成员函数sort()对链表进行排序 cout<<"排序后,链表为:"; listintegers.sort(); for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++) { cout<<*listiter<<" "; } cout<<endl; //使用list的成员函数remove()删除链表元素 listintegers.remove(8); cout<<"删除8后,链表为:"; for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++) { cout<<*listiter<<" "; } cout<<endl; //----------使用list成员函数pop_front删除链首元素---------- listintegers.pop_front(); cout<<"删除链首元素后。链表为:"; for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++) { cout<<*listiter<<" "; } cout<<endl; //----------使用list成员函数pop_back删除链尾元素---------- listintegers.pop_back(); cout<<"删除链尾元素后,链表为:"; for(listiter=listintegers.begin();listiter!=listintegers.end();listiter++) { cout<<*listiter<<" "; } cout<<endl; system("pause"); return 0; }

  • 相关阅读:
    <<C++ Primer>> 第三章 字符串, 向量和数组 术语表
    <<C++ Primer>> 第二章 变量和基本类型 术语表
    <<C++ Primer>> 第一章 开始 术语表
    PAT A1077 Kuchiguse (20)
    PAT A1035 Password (20)
    PAT A1005 Spell It Right (20)
    <<C++ Primer>> 术语表 (总) (待补充)
    PAT A1001 A+B Format (20 分)
    PAT B1048 数字加密 (20)
    Protocol
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5380170.html
Copyright © 2011-2022 走看看