emmm一天的进度比起昨天来说可以使很慢了。下午回了趟家,路上看了小会儿电影并没有按想象中那样坐在公交上看书刷书。回去了就是吃睡,实在浪费时间。很可耻。所以不废话赶紧结束这一张往后看了。
数据结构主要分三块:栈(先进先出),队列(先进后出),链表(动态变化)
在这里应该要仔细介绍三种数据结构的,但是在c++标准库函数STL都有对应的函数,(手撸是不存在的,很多很麻烦,所以还是要运用STL的,)所以在这里只介绍STL里这三种数据结构的用法了(嗷,不止这三种,还有向量(vector))
栈(stack)
运用栈管理整型数据
包含于:#include<stack>
声明: stack<int> S;
成员函数示例:
函数名 | 功能 | 复杂度 |
---|---|---|
size() | 返回栈的元素数 | O(1) |
top () | 返回栈顶元素 | O(1) |
pop() | 从栈中取出并删除元素 | O(1) |
push(x) | 向栈中添加元素X | O(1) |
empty | 在栈为空时返回true | O(1) |
队列(queue)
运用队列管理字符串
包含于:#include<queue>
声明:queue<string> Q;
成员函数示例:
函数名 | 功能 | 复杂度 |
---|---|---|
size() | 返回队列的元素数 | O(1) |
front() | 返回队头元素 | O(1) |
pop() | 从队列中取出并删除元素 | O(1) |
push(x) | 向队列中添加元素X | O(1) |
empty | 在队列为空时返回true | O(1) |
向量(vector)
运用向量实现动态数组,并用其管理数据
包含于:#include<vector>
声明:vector<double> V;
成员函数示例:
函数名 | 功能 | 复杂度 |
---|---|---|
size() | 返回向量的元素数 | O(1) |
push_back(x) | 在向量末尾添加元素x | O(1) |
pop_back() | 删除向量的最后一个元素 | O(1) |
begin() | 返回指向向量开头的迭代器 | O(1) |
end() | 返回指向向量末尾(最后一个元素的后一个位置)的迭代器 | O(1) |
insert(p,x) | 在向量的位置p处插入元素x | O(n) |
erase(p) | 删除向量中p的元素 | O(n) |
clear() | 删除向量中所有元素 | O(n) |
链表(list)
运用list实现双向链表,并用其管理char型元素
包含于:#include<list>
声明:list<char> L;
成员函数示例:
函数名 | 功能 | 复杂度 |
---|---|---|
size() | 返回表的元素数 | O(1) |
begin() | 返回指向表开头的迭代器 | O(1) |
end() | 返回指向表末尾(最后一个元素的后一个位置)的迭代器 | O(1) |
push_front(x) | 在表的开头添加元素x | O(1) |
push_back(x) | 在表的末尾添加元素x | O(1) |
pop_front() | 删除位于表开头的元素 | O(1) |
pop_back() | 删除位于表末尾的元素 | O(1) |
insert(p,x) | 在表的位置p处插入元素x | O(1) |
erase(p) | 删除表中位置p的元素 | O(1) |
clear() | 删除表中所有元素 | O(n) |