码迷,mamicode.com
首页 > 其他好文 > 详细

使用STL中的list容器实现单链表的操作

时间:2015-06-27 18:21:52      阅读:128      评论:0      收藏:0      [点我收藏+]

标签: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;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用STL中的list容器实现单链表的操作

标签:stl   list容器   

原文地址:http://blog.csdn.net/adminabcd/article/details/46662573

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!