DS(数据结构)

一.c。

1.基本知识。

  • 分支
  • 循环
  • 数组
  • 函数(值传递,地址传递)
  • 指针
  • 结构体

二.c++。

1.基本知识。

(1)stl库。

  • 容器(vector,map,set,string,stack,queue)
  • 算法(max/min,swap,reverse,sort)
  • 迭代器

(2)函数(值传递,地址传递,引用传递)。​​

三.算法。

1.基本知识。

(1)常见。

  • 枚举
  • 搜索
  • 贪心
  • dp

(2)暴力求解法。

  • 枚举
  • dfs
  • bfs

四.绪论。

1.基本概念。

  • 数据>数据对象>数据元素>数据项
  • 抽象数据类型是一种数据结构

2.程序。

(1)数据结构。

  • 逻辑结构(线性结构,树形结构,图形结构,集合结构)
  • 存储结构(顺序存储,链式存储,索引存储,哈希存储)
  • 数据运算(增,删,改,查)

(2)算法。

  • 特性(有穷性,可行性,确定性,输入,输出)
  • 评价算法好坏(健壮性,可读性,正确性,低存储,高效率)
  • 效率(时间复杂度,空间复杂度)

五.线性表。

1.顺序表(代码)

2.链表。

(1)单链表(代码)

(2)双向链表。

(3)循环链表。

(4)静态链表。

六.栈、队列、串。

1.栈。

(1)特点:后进先出。

(2)卡特兰数:\frac{1}{n+1}C_{2n}^{n}

(3)常见。

  • 顺序栈(代码)
  • 共享栈 
  • 链栈

(4)应用。

  • 斐波那契数列
  • 括号匹配
  • 中缀表达式转后缀表达式
  • 后缀表达式求值

2.队列。

(1)特点:先进先出。

(2)溢出:上溢出(扩充空间),假溢出(循环队列)。

(3)常见。

  • 循环队列(代码)
  • 双端队列
  • 链队列 

3.串。

(1)特点:数据元素为字符。

(2)kmp算法。

  • next数组
  • nextval数组(优化)

七.数组、广义表。

1.数组。

(1)对称矩阵(一维数组)。

(2)三角矩阵(一维数组)。

  • 上三角矩阵
  • 下三角矩阵

(3)对角矩阵(一维数组)。

  • 三对角矩阵 

(4)稀疏矩阵(三元组,十字链表)。 

注:数组下标0开始,矩阵下标1开始。 

2.广义表。

  • 长度
  • 深度
  • 表头
  • 表尾

八.树。

1.存储结构。

  • 双亲表示法
  • 孩子表示法
  • 孩子兄弟表示法 

2. 二叉树的基本形态。

  • 空树
  • 根结点
  • 根结点+左子树
  • 根结点+右子树
  • 根结点+左子树+右子树

3.公式。

(1)树 。

  • n=l+1
  • 树的边数等于所有顶点的度之和

(2)二叉树。

  •  高度为h的二叉树至多有^{}2^{h}-1个结点
  • 二叉树第h层至多有2^{h-1}个结点
  • 二叉树n0=n2+1

(3)完全二叉树。 

  • 有n个结点的完全二叉树最后一个分支结点为\left \lfloor \frac{n}{2} \right \rfloor
  • 有n个结点的完全二叉树的高度为\left \lfloor \log n \right \rfloor+1
  • 完全二叉树第i个结点双亲为\left \lfloor \frac{i}{2} \right \rfloor,左孩子为2i,右孩子为2i+1

4.树,森林,二叉树的遍历及转换。

(1)遍历。

  • 树(先根遍历,后根遍历)
  • 森林(先序遍历森林,后序遍历森林)
  • 二叉树(先序遍历,中序遍历,后序遍历,层次遍历)

注:二叉树代码。 

(2)转换。

森林二叉树
先根遍历先序遍历森林先序遍历
后根遍历后序遍历森林中序遍历

注:树/森林转换为二叉树唯一。 

4.哈夫曼树。

  • 哈夫曼树不唯一
  • 哈夫曼编码不唯一
  • WPL(带权路径长度)唯一

九.图。

1.存储结构。

  • 邻接矩阵
  • 邻接表
  • 邻接多重表
  • 十字链表

2.公式。

  • 有n个顶点的无向完全图边数为\frac{n(n-1)}{2}
  • 有n个顶点的有向完全图弧数为n(n-1)

3.图的遍历。

(1)dfs(代码)

(2)bfs(代码)

4.最小生成树。

  • 普里姆算法(稠密图)
  • 克鲁斯卡尔算法(稀疏图) 

5.最短路径。

  • 迪杰斯特拉算法(单源最短路径)
  • 弗洛伊德算法(多源最短路径) 

6.拓扑排序(AOV网-无权无环)。

7.关键路径(AOE网-有权无环)。

(1)源点:入度为0的顶点。

(2)汇点:出度为0的顶点。

(3)关键路径:从源点到汇点的最长路径。

(4)求解关键路径。

  • 事件最早发生时间(拓扑排序)
  • 事件最迟发生时间(逆拓扑排序)
  • 活动最早开始时间
  • 活动最迟开始时间
  • 活动时间余量(活动最迟开始时间-活动最早开始时间)

注:活动时间余量为0的是关键活动,关键活动组成关键路径。 

十.查找。

1.静态查找。

(1)顺序查找。 

(2)折半查找。

  • 有序
  • 顺序存储 

(3)分块查找。

  • 块间有序,块内无序
  • 块内顺序存储
  • 块内最优结点数(floor)\sqrt{n},有(ceil)\sqrt{n}

注:顺序查找,折半查找代码;ASL折半>分块>顺序。 

2.动态查找。

(1)二叉排序树

(2)平衡二叉树 

3.哈希查找。

(1)查找效率(与表长无关,与装填因子,散列函数,处理冲突的方法有关)。

(2)散列函数。

  • 直接定址法(不产生冲突)
  • 除留取余法(余数选不大于表长的最大质数) 

(3)处理冲突的方法。

  • 开放定址法(线性探测法,平方探测法)
  • 链地址法 

十一.排序。 

1.内部排序(内存进行)。

(1)插入排序。

  • 直接插入排序
  • 折半插入排序
  • 希尔排序

(2)选择排序。

  • 简单选择排序
  • 堆排序 

(3)交换排序(代码)

  • 冒泡排序
  • 快速排序 

(4)归并排序

  • 二路归并排序 

(5)基数排序 

2.外部排序(内外存进行)。

3.分类(内部排序)。

(1)比较次数与初始无关:选择排序、基数排序。

(2)移动次数与初始无关:归并排序、基数排序。

(3)排序趟数与初始有关:交换排序。

4.公式。

  • 基于比较的排序至少要比较\left \lceil \log n! \right \rceil 。

5.记忆(基于比较的排序)。    

(1)不稳定。

  • 简希快速堆 

(2)时间性能。

  • O(n\log n):归并快速堆 
  • O(n^{2}):其他

(3)空间性能。

  • O(n):归并排序
  • O(\log n):快速排序
  • O(1):其他

十二. 总结(c,c++,数据结构,算法息息相关)。

  • 35
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值