到目前为止学习的数据结构包括
1.数组保存数据(vector)建立二叉树,图,链表
2.struct结构体结构指针构图,打包对象属性(int)作为映射的对象
3.vector保存顺序,分配编号,保存输出,建立图
4.set查重,排序
5.map映射
6.queue队列先进先出整理队列(deque双端队列插入方便和迭代访问,primary_queue优先队列自定义排序方式)
7.stack栈后进先出分析表达式
8.链表顺序结构移动元素问题不能模拟要先预处理(单向链表和双向链表,双向链表和树状数组有不同,双向链表的起点不同,二树状数组起点为根节点)
9.二叉树(结构指针和树状数组)的递归构建、深搜dfs、广搜bfs最短路径权重问题,非二叉树问题四分树和多叉树
10.图的dfs求连通块、bfs球最短路、有向图DAG的拓扑排序、无向图有向图的欧拉回路
11,传说中的解答树,实质上并没有数据结构,只是一个递归迭代过程中抽象的一个排列树,确切的说是solve方法设计产生的一种树形结构思路(Uva129)
数据结构部分倾向于先建立数据结构再计算,其中,前七种构造很简单,后三种需要额外的构造程序来构造,一般是递归构造,有点难度
之后用到的就比如bfs,dfs之类的了倾向于算法设计
总之,做一道题之前先想一下数据结构设计,然后向solve方法设计(bfs,dfs),当然有一些题比如说 Uva看图写树 那个图不需要构造多叉树就可以在原图上dfs实现了,所以在准备构造复杂的树状和图结构的时候想一想是不是必须的,是不是可以直接dfs或者bfs实现。