使用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;

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值