C++ STL list实现 迭代器+摘除头遍历
#include <iostream>
#include <stdlib.h>
#include <cstring>
#include<list>
using namespace std;
int main()
{
list<int> l1,l2,l3;
int e;
while(true){
cin>>e;
if(e==-1)
break;
l1.insert(l1.end(),e);
}
while(true){
cin>>e;
if(e==-1)
break;
l2.insert(l2.end(),e);
}
/***
使用迭代器遍历版
list<int>::iterator it1,it2;
it1 = l1.begin();
it2 = l2.begin();
while(it1!=l1.end()&&it2!=l2.end()){
if(*it1<=*it2){
l3.insert(l3.end(),*it1);
it1++;
}else{
l3.insert(l3.end(),*it2);
it2++;
}
}
while(it1!=l1.end()){
l3.insert(l3.end(),*it1);
it1++;
}
while(it2!=l2.end()){
l3.insert(l3.end(),*it2);
it2++;
}
//省略释放空间
***/
while(!l1.empty()&&!l2.empty()){
if(*l1.begin()<=*l2.begin()){
l3.insert(l3.end(),*l1.begin());
l1.pop_front();
}else{
l3.insert(l3.end(),*l2.begin());
l2.pop_front();
}
}
while(!l1.empty()){
l3.insert(l3.end(),*l1.begin());
l1.pop_front();
}
while(!l2.empty()){
l3.insert(l3.end(),*l2.begin());
l2.pop_front();
}
int flag = 0;
while(!l3.empty()){
if(flag==0)
cout<<*l3.begin();
else
cout<<" "<<*l3.begin();
l3.pop_front();
flag++;
}
if(flag==0)
cout<<"NULL";
return 0;
}