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;
參考: