常见数据结构与C++实现

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;

参考:

  1. C++ 栈和队列的介绍与使用;
  2. c++ set集合的使用方法详解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章