C++系列: 常见数据结构与C++实现(9)

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
} 
操作含义
assignAssign vector content (public member function )
push_back增加元素
pop_back删除最后一个元素
insert插入元素
erase擦除元素
swap交换元素
clear清除元素
emplaceConstruct and insert element (public member function )
emplace_backConstruct 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;

参考:

  1. C++ 栈和队列的介绍与使用;
  2. c++ set集合的使用方法详解
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页