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; }

  • 相关阅读:
    【自动化学习】自动化误区
    【uwsgi】Mac下python dyld :Library not loaded 问题解决
    【Mysql】Mac版本navicat premium彻底卸载的终端命令:
    【Mysql学习】锁
    【Pytest学习】重复执行用例插件之pytestrepeat的详细使用
    【Python学习】异常传递
    【Jenkins学习】gitlab自动化触发jenkins任务
    一封程序员的情书
    UNION的使用
    为生成的新行添加默认值
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5380170.html
Copyright © 2011-2022 走看看