链表重载等号_c++ List(双向链表)

1 //-------------------------------------------------------------------------2 //文件名        :     list1.cpp3 //创建者        :    方煜宽4 //邮箱        :  fangyukuan@gmail.com5 //创建时间    :    2010-9-19 15:586 //功能描述    :    STL中的list就是一双向链表,可高效地进行插入删除元素。7 //8 //-------------------------------------------------------------------------9 #include"stdafx.h"10 #include11 #include12 usingnamespacestd;13 14 listg_list1;15 listg_list2;16 17 //18 19 //初始化全局链表20 voidInitList()21 {22 //push_back()增加一元素到链表尾23 g_list1.push_back(1);24 g_list1.push_back(2);25 g_list1.push_back(3);26 27 //push_front()增加一元素到链表头28 g_list2.push_front(6);29 g_list2.push_front(5);30 g_list2.push_front(4);31 }32 33 //输出一个链表34 voidShowList(list&listTemp)35 {36 //size()返回链表中元素个数37 cout<::iterator it=listTemp.begin(); it!=listTemp.end();++it)40 {41 cout<listTemp;52 cout<listTemp(3);59 ShowList(listTemp);60 }61 62 //构造函数,建一个含五个元素的链表,值都是163 voidconstructor_test2()64 {65 listlistTemp(5,1);66 ShowList(listTemp);67 }68 69 //构造函数,建一个g_list1的copy链表70 voidconstructor_test3()71 {72 listlistTemp(g_list1);73 ShowList(listTemp);74 }75 76 //构造函数,listTemp含g_list1一个区域的元素[_First, _Last)77 voidconstructor_test4()78 {79 listlistTemp(g_list1.begin(), g_list1.end());80 ShowList(listTemp);81 }82 83 //assign()分配值,有两个重载84 //template 85 //void assign ( InputIterator first, InputIterator last );86 //void assign ( size_type n, const T& u );87 voidassign_test()88 {89 listlistTemp(5,1);90 ShowList(listTemp);91 92 listTemp.assign(4,3);93 ShowList(listTemp);94 95 listTemp.assign(++g_list1.begin(), g_list1.end());96 ShowList(listTemp);97 }98 99 //operator=100 voidoperator_equality_test()101 {102 g_list1=g_list2;103 ShowList(g_list1);104 ShowList(g_list2);105 }106 107 //front()返回第一个元素的引用108 voidfront_test7()109 {110 cout<::iterator it1=g_list1.begin();123 cout<::const_iterator it2=g_list1.begin();126 it2++;127 //(*it2)++;//*it2 为const 不用修改128 cout<::iterator it=g_list1.end();//注意是:最后一个元素的下一位置的指针136 --it;137 cout<::reverse_iterator it=g_list1.rbegin();144 for(; it!=g_list1.rend();++it)145 {146 cout<::reverse_iterator it=g_list1.rend();155 --it;156 cout<listTemp;243 if(listTemp.empty())244 cout<::size_type nMax=g_list1.max_size();254 cout<listTemp;284 listTemp.push_back(9);285 listTemp.push_back(3);286 listTemp.push_back(5);287 listTemp.push_back(1);288 listTemp.push_back(4);289 listTemp.push_back(3);290 291 ShowList(listTemp);292 listTemp.sort();293 ShowList(listTemp);294 295 listTemp.sort(greater());296 ShowList(listTemp);297 }298 299 //merge()合并两个升序序链表并使之成为另一个升序.300 voidmerge_test1()301 {302 listlistTemp2;303 listTemp2.push_back(3);304 listTemp2.push_back(4);305 306 listlistTemp3;307 listTemp3.push_back(9);308 listTemp3.push_back(10);309 310 ShowList(listTemp2);311 cout<int(second) ); }322 323 //merge()合并两个降序链表并使之成为另一个降序.324 voidmerge_test2()325 {326 listlistTemp2;327 listTemp2.push_back(4);328 listTemp2.push_back(3);329 330 listlistTemp3;331 listTemp3.push_back(10);332 listTemp3.push_back(9);333 334 ShowList(listTemp2);335 cout<());//第二个参数可以是自己定义的函数如下340 listTemp2.merge(listTemp3, myCmp);341 ShowList(listTemp2);342 }343 344 //splice()对两个链表进行结合(三个重载函数),结合后第二个链表清空345 //void splice ( iterator position, list& x );346 //void splice ( iterator position, list& x, iterator i );347 //void splice ( iterator position, list& x, iterator first, iterator last );348 voidsplice_test()349 {350 listlistTemp1(g_list1);351 listlistTemp2(g_list2);352 353 ShowList(listTemp1);354 ShowList(listTemp2);355 cout<382 //void insert ( iterator position, InputIterator first, InputIterator last );383 voidinsert_test()384 {385 listlistTemp1(g_list1);386 ShowList(listTemp1);387 listTemp1.insert(listTemp1.begin(),51);388 ShowList(listTemp1);389 cout<listTemp2(g_list1);392 ShowList(listTemp2);393 listTemp2.insert(listTemp2.begin(),9,51);394 ShowList(listTemp2);395 cout<listTemp3(g_list1);398 ShowList(listTemp3);399 listTemp3.insert(listTemp3.begin(), g_list2.begin(), g_list2.end());400 ShowList(listTemp3);401 402 }403 404 //swap()交换两个链表(两个重载)405 voidswap_test()406 {407 ShowList(g_list1);408 ShowList(g_list2);409 cout<listTemp;423 listTemp.push_back(1);424 listTemp.push_back(1);425 listTemp.push_back(4);426 listTemp.push_back(3);427 listTemp.push_back(5);428 listTemp.push_back(1);429 listlistTemp2(listTemp);430 431 ShowList(listTemp);432 listTemp.unique();//不会删除不相邻的相同元素433 ShowList(listTemp);434 cout<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值