1. 线性表
顺序表
#include <iostream>
#include <vector>
using namespace std;
void print_vector(vector<auto> vec){
for (auto i:vec){
cout << i << " ";
}
cout << endl;
}
int main(){
vector<int> v1(5,10);//5个重复元素,值为10
}
操作 | 含义 |
---|---|
assign | Assign vector content (public member function ) |
push_back | 增加元素 |
pop_back | 删除最后一个元素 |
insert | 插入元素 |
erase | 擦除元素 |
swap | 交换元素 |
clear | 清除元素 |
emplace | Construct and insert element (public member function ) |
emplace_back | Construct and insert element at the end (public member function ) |
链表
定义:
struct ListNode{
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL){}
};
ListNode node(0);
或者不带初始化的
struct ListNode
{
int val;
ListNode* next;
};
ListNode* node = NULL;
2. 栈
后进先出。
定义:
#include<stack>
stack<int> mystack;
操作 | 含义 |
---|---|
s.empty() | 如果栈为空返回true,否则返回false |
s.size() | 返回栈中元素的个数 |
s.pop() | 删除栈顶元素但不返回其值 |
s.push() | 在栈顶压入新元素 |
s.top() | 返回栈顶的元素,但不删除该元素 |
3. 队列
先进先出。
定义:
#include<queue>
queue<int> q;
操作 | 含义 |
---|---|
q.empty() | 如果队列为空返回true,否则返回false |
q.size() | 返回队列中元素的个数 |
q.pop() | 删除队列首元素但不返回其值 |
q.front() | 返回队首元素的值,但不删除该元素 |
q.push() | 在队尾压入新元素 |
q.back() | 返回队列尾元素的值,但不删除该元素 |
3. 集合 set
#include<iostream>
#include<set>
using namespace std;
int main()
{
set<int>s;
s.insert(3);
set<int>::iterator it;
for(it=s.begin();it!=s.end();it++) //使用迭代器进行遍历
{
printf("%d\n",*it);
}
}
操作 | 含义 |
---|---|
begin() | 返回set容器的第一个元素的地址 |
end() | 返回set容器的最后一个元素地址 |
clear() | 删除set容器中的所有的元素 |
empty() | 判断set容器是否为空 |
max_size() | 返回set容器可能包含的元素最大个数 |
size() | 返回当前set容器中的元素个数 |
erase(it) | 删除迭代器指针it处元素 |
insert(a) | 插入某个元素 |
4. 树
定义树:
struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL){}
};
5. 图
定义图:
使用vector
实现。
vector<vector<pair<int, int>>> graph;
参考: