STL排序链表

来源:互联网 发布:java erp 开源框架 编辑:程序博客网 时间:2024/05/21 13:58

例子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<*iterLS.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;}