在stl中,list是实现是采用双向链表来实现的,具体结构如下:
list的节点结构如下
template<class T>
strcut __list_node{
typedef void* void_pointer;
void_pointer prev;
void_pointer next;
T Data;
}
定义了上面那样的一个双向链表结构,然后在list类中有关于这个结构的插入删除等一系列方法,具体简单操作就如下面的源码一样:
#include <list>
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int i;
list<int> ilist;
cout << "Size = " << ilist.size() << endl;
ilist.push_back(0);
ilist.push_back(1);
ilist.push_back(3);
ilist.push_back(3);
ilist.push_back(4);
cout << "Size = " << ilist.size() << endl;
list<int>::iterator ite;
for (ite = ilist.begin(); ite != ilist.end(); ++ite){
cout << *ite << " ";
}
cout << endl;
ite = find(ilist.begin(), ilist.end(), 3);
if (ite != ilist.end())
ilist.insert(ite, 99);
cout << "Size = " << ilist.size() << endl;
cout << *ite << endl;
for (ite = ilist.begin(); ite != ilist.end(); ++ite){
cout << *ite << endl;
}
cout << endl;
ite = find(ilist.begin(), ilist.end(), 1);
cout << *(ilist.erase(ite)) << endl;
for (ite = ilist.begin(); ite != ilist.end(); ++ite){
cout << *ite << endl;
}
getchar();
getchar();
return 0;
}
以上操作完成了对list简单的增删操作