软考-软件设计师-数据结构

线性表

顺序表:元素在内存当中以顺序存储

链表:离散单独一个一个点,通过指针联系起来

(单链表)指针指向下一个元素地址

(循坏链表)尾元素指针指向首元素地址

(双链表)双链表头尾指针指向上一个元素及下一个元素的地址

:先进后出

队列:先进先出

循坏队列:入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,队空和队满时头尾指针均相等,使用求余运算可以判断队列是否已满。

树的基本概念:略

树的遍历(先序,后序,层次)

二叉树

满二叉树:二叉树上所有节点都是充实饱满的

完全二叉树:有N层,N-1就是满树,最后一层节点从左至右排列。

二叉树的遍历(先序,中序,后序,层次)

树转二叉树:对于任何一个节点树的孩子节点作为他转成二叉树的左子树节点。树的兄弟节点变成右子树节点。(树只留最左边孩子节点的线,兄弟节点连起来)

 

查找二叉树(二叉排序树)

查找二叉树的基本操作(查找,新增,删除):略

最优二叉树(哈夫曼树):叶子结点权乘以树高度(根为0)用户压缩数据。常用与数据压缩。

最优二叉树的构造,一组集合中,最小二个数先做兄弟节点,组成后的父节点权值为子节点相加,再和最小数结合组成新数,以此类推,如下图

哈夫曼编码:左子树边为0右子树边为1。

线索二叉树:排序二叉树查找就要遍历,就要递归 ,二叉树的存储结构    Lchild   |  data  |  Rchild   叶子节点就造成空间浪费。由此左指针指向前驱,右指针指向后继,此时叫线索  Lbit  |  Lchild   |  data  |  Rchild  | Rbit   1 代表线索,0代表常规指针。用户数据的存储不浪费。

先序举一个

二叉树转前序(中序,后序)线索数:先写出前序个节点顺序,叶子节点的前驱和后继就很明朗了。

平衡二叉树:是衡量排序二叉树结构是否合理的一个指标(使综合每个节点查找次数最低)

树与图关系:树只是图的一种特殊形式,树有回路就是图了

图的基本概念:有限非空顶点集合,边集

有向图<>,无向图()

顶点的度:与之关联的边,有向图(出度,入度)

子图:略

完全图:每对顶点之间都有一条边相连,每对顶点之间都有二条边相连

 

路径:路径是由边组成的,起点到终点,所经历边的序列

回路:一个点出发,又回到这一个点

简单回路:除了起点和终点相同,路径序列其他点都不相同

强连通图:每两点,都有路径可以到达(有向图中,隔点能到达也行)

连通分量:一个图割离开来分成几部分,每部分都是连通图。

网络:图加上边的权值。

图的存储

邻接矩阵:N个结点,用N阶方阵存放图中个结点关联信息。网络邻接矩阵,方阵不在填值,填权值,没边填-1。

 

 

 

邻接表:N个结点,N个列表, V1--- |V2|权值|指针|--- |V4|权值|null

当图中的边远远小于顶点数时,邻接矩阵就成了 稀疏矩阵,造成空间浪费。

 

 

图的遍历:深度优先算法  |    广度优先算法

深度算法DFS

要回退

 

 广度BFS

 

最小生成树:各城市建网络需要覆盖,又要最低成本

实现一:普里姆算法   目标集合以一个出发点扩充完整数(扩充的点并到集合里),每次寻找于集合最短的点。

实现二:克鲁斯卡尔 算法:点都分离出来,每次选取最小边直到全联通

拓扑排序和关键路径

AOV网:有向边表示活动之间开始的先后关系

拓扑排序:任务的先后执行顺序

AOE网:AOV的基础上加上边的权值

关键路径:AOE中最长的路径

边的最早开始时间:发出顶点的最早开始时间

顶点的最早开始时间:到达顶点的最长路径

哈希表

相比于树和图,哈希表不经过任何比较,直接找到关键字

概念:根据内容通过一定运算,直接得到他的存储地址

冲突:关键字不同,求出的hash地址相同

哈希函数:运算过程 ,衡量标准:冲突避免

处理冲突的方法

开放地址法:当发生地址冲突时,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。

拉链法:散列列表每个节点增加一个指针字段,用于链接同义词子表,链表中的结点都是同义词

hash表查找:探测几次把数据存入,查找的时候也要几次查找出来

平均查找长度:所有元素的查找长度累加 / 元素个数

个人笔记

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值