数据结构期末复习重点(仅供参考....更新中)

数据结构期末复习重点

  • 一、线性结构
    • 1、串的模式匹配(区分目标串和模式串、nextval数组值、KMP算法匹配过程)
    • 2、利用栈对表达式求值
  • 二、非线性结构
    • 1、树与二叉树
    • 2、图
  • 三、查找与排序
    • 1、查找
      • 哈希表查找(哈希表的基本概念、3个因素、线性探测法解决冲突、哈希表的求解与建立)
      • 用线性探测解决冲突的例题:
      • 解题过程如下:
      • 除留余数法:
      • 采用除留余数法解决冲突例题:
    • 2、排序
      • 直接插入排序和折半查找(直接插入排序思想、折半查找的思想、直接插入排序和折半查找的求解过程)
      • 直接插入排序思想:
      • 折半查找的思想:(效率较高)
      • 拓扑排序的思想:

一、线性结构

1、串的模式匹配(区分目标串和模式串、nextval数组值、KMP算法匹配过程)

数据结构期末复习重点(仅供参考....更新中)_第1张图片
数据结构期末复习重点(仅供参考....更新中)_第2张图片

2、利用栈对表达式求值

数据结构期末复习重点(仅供参考....更新中)_第3张图片
数据结构期末复习重点(仅供参考....更新中)_第4张图片

二、非线性结构

1、树与二叉树

(1)哈夫曼树(思想)、哈夫曼编码和带权路径长度求解
思想:在n0个带权叶子节点构成的所有二叉树中,带权路径长度WPL最小的二叉树成为哈夫曼树或者是最优二叉树。
(2)二叉树的先序、中序和后序遍历的思想和求解。
先序(DLR):先遍历根,再遍历左子树,最后遍历右子树。
中序(LDR):先遍历左子树,再遍历根,最后遍历右子树。
后续(LRD):先遍历左子树,再遍历右子树,最后遍历根。

2、图

(1)图的存储结构(邻接矩阵表示、邻接表表示、邻接矩阵的特点(有向图))
(2)图的遍历(DFS、BFS的算法思想和结合某种存储结构进行遍历求解)
(3)图的最短路径(单源点):Dijkstra算法思想、最短路径求解,求解时一定要给出求解步骤。

三、查找与排序

1、查找

哈希表查找(哈希表的基本概念、3个因素、线性探测法解决冲突、哈希表的求解与建立)

哈希表的基本概念:

哈希表(hash table)又称三列表,其基本思路是,设要存储的元素个数为n,设置一个长度为m(m>=n)的连续内存单元,以每个元素的关键字ki(0<=i<=n-1)为自变量,通过一个称为哈希函数(hash function)的函数h(ki)吧ki映射为内存单元的地址(或下标)h(ki),并把该元素存储在这个内存单元中,h(ki)也成为哈希地址(hash address)。把如此构造的线性表存储结构称为哈希表。

三个因素:
①哈希函数。
②处理冲突的方法。
③哈希表的装填因子。

哈希函数的好坏首先影响出现冲突的频繁程度。
假定哈希函数是“均匀的”,即不同的哈希函数对同一组随机的关键字,产生冲突的可能性相同。
对同一组关键字,设定相同的哈希函数,则不同的处理冲突的方法得到的哈希表不同,它的平均查找长度也不同。
若处理冲突的方法相同,其平均查找长度依赖于哈希表的装填因子。

线性探测法
线性探测法是从发生冲突的地址(设为d)开始,依次探测d的下一个地址(当到达下标为m-1的哈希表表尾时,下一个探测的地址是表首地址0),直到找到一个空闲单元为止(当m≥n时一定能找到一个空闲单元)。线性探测法的数学递推描述公式为:
d0=h(k)
di=(di-1+1) mod m (1≤i≤m-1)

用线性探测解决冲突的例题:

数据结构期末复习重点(仅供参考....更新中)_第5张图片

解题过程如下:

数据结构期末复习重点(仅供参考....更新中)_第6张图片
构建哈希表:
数据结构期末复习重点(仅供参考....更新中)_第7张图片
数据结构期末复习重点(仅供参考....更新中)_第8张图片

除留余数法:

除留余数法是用关键字k除以某个不大于哈希表长度m的数p所得的余数作为希地址的方法。除留余数法的哈希函数h(k)为:
h(k)=k mod p (mod为求余运算,p≤m) ,p最好是质数(素数)。

采用除留余数法解决冲突例题:

采用除留余数法哈希函数建立如下关键字集合的哈希表:{16,74,60,43,54,90,46,31,29,88,77}。
除留余数法的哈希函数为:
   h(k)=k mod 13
对构造的哈希表采用线性探测法解决冲突。
解:h(16)=3,h(74)=9,h(60)=8,h(43)=4,
h(54)=2,h(90)=12,h(46)=7,h(31)=5,
h(29)=3 冲突
d0=3,d1=(3+1) mod 13=4 冲突
d2=(4+1) mod 13=5 仍冲突
d3=(5+1) mod 13=6
h(88)=10
h(77)=12 冲突
d0=12,d1=(12+1) mod 13=0
建立的哈希表ha[0…12]如下表所示。
数据结构期末复习重点(仅供参考....更新中)_第9张图片

2、排序

直接插入排序和折半查找(直接插入排序思想、折半查找的思想、直接插入排序和折半查找的求解过程)

直接插入排序思想:

假设待排序的记录存放在数组R[0…n-1]中。初始时,R[0]自成1个有序区,无序区为R[1…n-1]。从i=1起直至i=n-1为止,无序区的头元素,与有序的最后一个元素比较,一次从后往前比较,符合条件插入有序区,知道无序区元素个数为0.

折半查找的思想:(效率较高)

折半查找时, 先求位于查找区间正中的对象的下标
mid,用其关键码与给定值k比较:
Element[mid].key == k,查找成功;
Element[mid].key > k,把查找区间缩小到表的前
半部分,继续折半查找;
Element[mid].key < k,把查找区间缩小到表的后半部分,继续折半查找。
如果查找区间已缩小到一个对象,仍未找到想要查
找的对象,则查找失败。

例如:
在关键字有序序列{2,4,7,9,10,14,18,26,32,40}中采用折半查找法查找关键字为7的元素。
数据结构期末复习重点(仅供参考....更新中)_第10张图片
折半查找的平均查找长度:
数据结构期末复习重点(仅供参考....更新中)_第11张图片

折半查找例题:
1、折半查找有序表(4,6,10,12,20,30,50,70,88,100),若查找表中元素38,则它将依次与表中哪些元素比较大小,查找结果是失败。

答案选 C

2、折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素 __________比较大小。

答案:28,6,12,20

拓扑排序的思想:

①从有向图中选择一个没有前驱(入度为零)的定点并且输出他。
②从图中删去该顶点,并且删去从该顶点发出的全部有向边。
③重复上述两步,直到剩余的图中不再存在没有前驱的顶点为止。

你可能感兴趣的:(数据结构期末复习重点(仅供参考....更新中))