例子1:
#include<iostream>
#include<string>//对字符串操作
#include<list>//STL对数据结构中的双向链表类操作
using namespace std;
int main()
{
string s;
list<string>LS;
list<string>::iterator iter;//迭代器
while(true){//表面看起来似乎 没用,其实是可控的循环与break联合使用
cout<<"Enter string until enter"<<endl;
getline(cin,s);
if(s.size()==0)
break;//循环结束的条件
LS.push_back(s);//在末尾添加元素。(将字符串压入链表,按照正常顺序存储)
//LS.push_front(s)//在开头添加元素。
}
cout<<"开始的顺序:"<<endl;
for(iter=LS.begin();iter!=LS.end();iter++)
cout<<*iter<<endl;//遍历器遍历输出
LS.sort();//排序
cout<<"排序后的顺序:"<<endl;
for(iter=LS.begin();iter!=LS.end();iter++)//遍历器最后到达链表节点的后一个位置(END)
cout<<*iter<<endl;//遍历器遍历输出
system("pause");
return 0;
}
例子2:
#include<iostream>
#include<string>//对字符串操作
#include<list>//STL对链表类操作,立即分配了若干链表空间,等待输入数据
using namespace std;
int main()
{
string s;
list<string>LS;
list<string>::iterator iter;//遍历器
while(true){//表面看起来似乎 没用,其实是可控的循环与break联合使用
cout<<"Enter string until enter"<<endl;
getline(cin,s);
if(s.size()==0)
break;//循环结束的条件
iter=LS.begin();//首次有元素插入的时候,iter==LS.end()==LS.begin()
while(iter!=LS.end())
{
if(s>*iter)
iter++;
else
break;
}
//循环结束:1)iter==SL.end() 2)s<*iter
LS.insert(iter,s);//将s插入iter之前 ,包含了将数据s写入链表空间并插入的功能
/*********第二种插入方法 **************
for(iter=LS.begin();iter!=LS.end()&&s>*iter;)
iter++;
LS.insert(iter,s);
************************************/
}
cout<<"顺序:"<<endl;
for(iter=LS.begin();iter!=LS.end();iter++)//遍历器最后到达链表节点的后一个位置(END)
cout<<*iter<<endl;//遍历器遍历输出
system("pause");
return 0;
}