对接CSP-J/S认证C++算法蓝桥等考导学/四级:线性数据结构/之二:(15)双向链表之STL链表


一、观看PPT教程 

02】STL链表

二、练习题(不清楚回头查看有关PPT)

01】下面是STL链表的功能测试程序,请补全缺失的注释:

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

#include<iostream>#include<list>   //using namespace std;list<int> lis;  ////begin()返回指定容器中第一个元素的迭代器void testBegin(){  list<int>::iterator it = lis.begin();  cout << *it << endl;} //void testEnd(){  list<int>::iterator it = lis.end();  cout << *it << endl;}//void testRbegin(){  list<int>::reverse_iterator it = lis.rbegin();  cout << *it << endl;} //void testRend(){  list<int>::reverse_iterator it = lis.rend();  cout << *it << endl;} //遍历void print_list(){  list<int>::iterator it;  //从左到右遍历   for(it = lis.begin(); it != lis.end(); it++){    cout << *it << "  ";  }  cout << " | ";  list<int>::reverse_iterator rit;  //   for(rit = lis.rbegin(); rit != lis.rend(); rit++){    cout << *rit << "  ";  }  cout << endl;} //void testFront(){  list<int>::reference ref = lis.front();  //  print_list();  ref = 3;  //  print_list();}//void testBack(){  list<int>::reference ref = lis.back();  print_list();  ref = 10;  //  print_list();}//void testPush_front(){  lis.push_front(100);  //  print_list();}//void testPush_back(){  lis.push_back(200);  //  print_list();}//void testPop_front(){  lis.pop_front();  print_list();}//void testPop_back(){  lis.pop_back();  print_list();}//void testInsert(){  lis.insert(lis.begin(), 4);  //  print_list();  lis.insert(lis.end(), 7);  //  print_list();  //建立一个新列表  int dt[] = {8,11,25,29,23};  list<int> lis2;  for(int i = 0; i < 5; i++)lis2.push_back(dt[i]);  //  lis.insert(lis.end(), lis2.begin(), lis2.end());  print_list();}//void testErase(){  lis.erase(lis.begin());  //  print_list();  lis.erase(++lis.begin());  //删除第二个元素   print_list();  //删除第二个到倒数第二个(包括) 元素  lis.erase(++lis.begin(), --lis.end());     print_list();  lis.erase(lis.begin(), lis.end()); //  print_list();}//void testClear(){  lis.clear();  print_list();}//void testSwap(){  list<int> nlis;  for(int i = 1; i < 11; i++)nlis.push_back(i*i);  lis.swap(nlis);  print_list();}//void testSort(){  lis.sort();  print_list();}//void testReverse(){  lis.reverse();  print_list();}//void testRemove(){  lis.remove(100);  //   print_list();}//void testUnique(){  lis.unique();  print_list();}//void testMerge(){  list<int> nlis;  for(int i = 1; i < 11; i++)nlis.push_back(i*i);  lis.sort();  lis.merge(nlis);  print_list();}//empty()是否空链表void testEmpty(){   cout << lis.empty() << endl;} //初始化链表void init(){  int data[] = {5,1,1,3,3,1,8,13,5};  for(int i = 0; i < 9; i++)lis.push_back(data[i]);} int main(){    init();    testBegin();    testEnd();    testRbegin();    testRend();    testFront();    testBack();    testPush_front();    testPush_back();    testPop_front();    testPop_back();    testInsert();    testUnique();    testReverse();    testSort();    testMerge();    testRemove();    testErase();    testSwap();    testClear();    testEmpty();  return 0;}

02】编程题:约瑟夫环
03】编程题:排队