前言
前面两个文章通过C语言自己实现List链表,但是我们在实际应用过程中,大多多时候都是使用已经封装好的。例如在C++中,我们可以使用stl提供的list,在Java中,也可以使用util中提供的List。今天就通过C++来实现对List的操作
代码实现
#include<iostream>
#include<list>
using namespace std;
int main() {
list<int> s1;
list<int> s2;
// 从前面插入数据
s1.push_front(2);
s1.push_front(1);
// 从后面插入数据
s1.push_back(3);
s1.push_back(4);
// 获取总数
printf("the size of list %d\n", s1.size());
// 通过iterator遍历数据
list<int>::iterator it;
for(it = s1.begin(); it!=s1.end(); it++)
printf("%d ", *it);
printf("\n");
// 返回第一个元素
int firstNum = s1.front();
printf("the first num is %d\n", firstNum);
// 返回最后一个元素
int lastNum = s1.back();
printf("the last num is %d\n", lastNum);
// 删除第一个元素
s1.pop_front();
for(it = s1.begin(); it!=s1.end(); it++)
printf("%d ", *it);
printf("\n");
// 删除最后一个元素
s1.pop_back();
for(it = s1.begin(); it!=s1.end(); it++)
printf("%d ", *it);
printf("\n");
// 从第一个位置开始插入两个9
s1.insert(s1.begin(), 2, 9);
for(it = s1.begin(); it!=s1.end(); it++)
printf("%d ", *it);
printf("\n");
// list排序
s1.sort();
for(it = s1.begin(); it!=s1.end(); it++)
printf("%d ", *it);
printf("\n");
// list逆置
s1.reverse();
for(it = s1.begin(); it!=s1.end(); it++)
printf("%d ", *it);
printf("\n");
// list去重
s1.unique();
for(it = s1.begin(); it!=s1.end(); it++)
printf("%d ", *it);
printf("\n");
// list中移除指定的值9
s1.remove(9);
for(it = s1.begin(); it!=s1.end(); it++)
printf("%d ", *it);
printf("\n");
// 删除s1中第一个元素
s1.erase(s1.begin());
for(it = s1.begin(); it!=s1.end(); it++)
printf("%d ", *it);
printf("\n");
// 为s2赋值4个3
s2.assign(4, 3);
for(it=s2.begin();it!=s2.end(); it++)
printf("%d ", *it);
printf("\n");
// 交换s1 和 s2
swap(s1, s2);
for(it=s2.begin();it!=s2.end(); it++)
printf("%d ", *it);
printf("\n");
// 合并s1 和 s2
s2.splice(s2.begin()++, s1);
for(it=s2.begin();it!=s2.end(); it++)
printf("%d ", *it);
printf("\n");
// 清空所有元素
s1.clear();
// 判断是否为空
if(s1.empty()) printf("s1 is empty");
else printf("s1 is not empty");
return 0;
}
2644

被折叠的 条评论
为什么被折叠?



