数据结构第二十讲

合集下载

数据结构二叉树PPT课件

数据结构二叉树PPT课件

A
B
CX
E FGH I
J
8
四. 基本名词术语
1. 结点的度:该结点拥有的子树的数目。
2. 树的度:树中结点度的最大值。
3. 叶结点:度为0 的结点. 4. 分支结点: 度非0 的结点. 5. 层次的定义: 根结点为第一层,若某结点在第i 层,
则其孩子结点(若存在)为第i+1层.
A
第1层
B
CX
第2层
12
完全二叉树.
三.i 层最多有2i–1个结点(i1)。
2. 深度为h 的非空二叉树最多有2h -1个结点.
3. 若非空二叉树有n0个叶结点,有n2个度为2的结点,

n0=n2+1
4. 具有n个结点的完全二叉树的深度h=log2n+1.
13
二叉树的存储结构
39

A
BC D
E F GH I
对树进行先根遍历,获得的先根序列是: ABEFCDGHI
对树进行后根遍历,获得的后根序列是: EFBCGHIDA
40
2.森林的遍历
先序遍历(对森林中的每一棵树进行先根遍历)
1)若森林不空,访问森林中第一棵树的根结点; 2)先序遍历森林中第一棵树的子树森林; 3)先序遍历森林中(除第一棵树外)其余树构成的森林。
(空) 根 根 根

左 子 树
右 子 树
左 子 树
右 子 树
11
二. 两种特殊形态的二叉树
1. 满二叉树
若一棵二叉树中的结点, 或者为叶结点, 或者具有两 棵非空子树,并且叶结点都集 中在二叉树的最下面一层.这 样的二叉树为满二叉树.
2.完全二叉树
若一棵二叉树中只有最下 面两层的结点的度可以小于2, 并且最下面一层的结点(叶结 点)都依次排列在该层从左至 右的位置上。这样的二叉树为

《数据结构与问题求解:Java语言描述》笔记

《数据结构与问题求解:Java语言描述》笔记

《数据结构与问题求解:Java语言描述》阅读笔记目录一、内容综述 (2)1. 本书简介与背景介绍 (3)2. 本书阅读目的与预期成果 (4)二、基础概念与预备知识 (5)1. 数据结构定义与重要性 (7)2. 算法概念及其与数据结构的关系 (9)3. Java语言基础语法回顾 (9)4. 预备知识 (11)三、数据结构概述 (13)1. 数据结构的分类与特点介绍 (14)2. 数据结构的选择与应用场景分析 (16)四、线性数据结构 (18)1. 数组的概念与应用 (20)2. 链表的概念与应用 (20)3. 队列和栈的概念与应用 (22)4. 线性数据结构的性能分析 (23)五、非线性数据结构 (25)1. 树形数据结构概述 (26)2. 二叉树及其相关操作与应用实例分析讲解 (27)3. 图论中的基本概念及图的表示方法介绍等 (28)一、内容综述《数据结构与问题求解:Java语言描述》是一本关于数据结构和算法的经典教材,作者是Robert Sedgewick和Kevin Wayne。

本书以Java语言为实现工具,详细介绍了数据结构的基本概念和常用算法,以及如何将这些概念和算法应用于实际问题。

全书共分为5章,分别是基本数据结构、排序算法、图论、动态规划和高级数据结构。

第1章主要介绍了基本数据结构,包括线性表、栈和队列等。

线性表包括顺序表、链表和树表等,讲解了它们的基本操作和应用场景。

栈和队列分别介绍了它们的抽象数据类型、操作方法和应用实例。

第2章主要介绍了排序算法,包括冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序等。

每种排序算法都详细讲解了其原理、实现过程和优缺点,以及在不同场景下的应用。

第3章主要介绍了图论的基本概念和常用算法,如图的表示、遍历、最短路径算法(Dijkstra算法、FloydWarshall算法)、最小生成树算法(Kruskal算法、Prim算法)等。

还介绍了图的一些扩展概念,如带权有向图、带权无向图、加权图等。

数据结构树的知识点总结

数据结构树的知识点总结

数据结构树的知识点总结一、树的基本概念。

1. 树的定义。

- 树是n(n ≥ 0)个结点的有限集。

当n = 0时,称为空树。

在任意一棵非空树中:- 有且仅有一个特定的称为根(root)的结点。

- 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、…、Tm,其中每个集合本身又是一棵树,并且称为根的子树(sub - tree)。

2. 结点的度、树的度。

- 结点的度:结点拥有的子树个数称为结点的度。

- 树的度:树内各结点的度的最大值称为树的度。

3. 叶子结点(终端结点)和分支结点(非终端结点)- 叶子结点:度为0的结点称为叶子结点或终端结点。

- 分支结点:度不为0的结点称为分支结点或非终端结点。

- 除根结点之外,分支结点也称为内部结点。

4. 树的深度(高度)- 树的层次从根开始定义起,根为第1层,根的子结点为第2层,以此类推。

树中结点的最大层次称为树的深度(或高度)。

二、二叉树。

1. 二叉树的定义。

- 二叉树是n(n ≥ 0)个结点的有限集合:- 或者为空二叉树,即n = 0。

- 或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。

2. 二叉树的特点。

- 每个结点最多有两棵子树,即二叉树不存在度大于2的结点。

- 二叉树的子树有左右之分,次序不能颠倒。

3. 特殊的二叉树。

- 满二叉树。

- 一棵深度为k且有2^k - 1个结点的二叉树称为满二叉树。

满二叉树的特点是每一层上的结点数都是最大结点数。

- 完全二叉树。

- 深度为k的、有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树。

完全二叉树的叶子结点只可能在层次最大的两层上出现;对于最大层次中的叶子结点,都依次排列在该层最左边的位置上;如果有度为1的结点,只可能有一个,且该结点只有左孩子而无右孩子。

三、二叉树的存储结构。

1. 顺序存储结构。

- 二叉树的顺序存储结构就是用一组地址连续的存储单元依次自上而下、自左至右存储完全二叉树上的结点元素。

plc的数据结构

plc的数据结构

在PLC内部结构和用户应用程序中使用着大量的数据。

这些数据从结构或数制上具有以下几种形式。

(1)十进制数十进制数在可编程控制器中又称字数据。

它主要存在于定时器和计数器的设定值K;辅助继电器、定时器、计数器、状态继电器等的编号;定时器和计数器当前值等方面。

(2)二进制数十进制数、八进制数、十六进制数、BCD码在PLC内部均是以二进制数的形态存在。

但使用外围设备进行系统运行监控显示时,会还原成原来的数制。

一位二进制数在PLC中又称位数据。

它主要存在于各类继电器、定时器、计数器的触点及线圈。

(3)八进制数FX系列PLC的输入继电器、输出继电器的地址编号采用八进制。

(4)十六进制数十六进制数用于指定应用指令中的操作数或指定动作。

(5)BCD码BCD码是以4位二进制数表示与其对应的一位十进制数的方法。

PLC中的十进制数常以BCD码的形态出现,它还常用于BCD输出形式的数字式开关或七段码的显示器控制等方面。

(6)常数K、H常数是PLC内部定时器、计数器、应用指令不可分割的一部分。

常数K用来表示十进制数,16位常数的范围为-32768~ 32767,32位常数的范围为-2147483648~ 2147483647。

常数H用来表示十六进制数,十六进制包括0~9和A~F这16个数字,16位常数的范围为0~FFFF,32位常数的范围为0~FFFFFFFF。

对于很多人来说,特别是年轻人,他们往往在策划自己第一个项目时候就会喊出“我们致力于做国内最大的XXX平台“这样的口号。

这当然不是一件坏事,这表明两千多年前,”王侯将相,宁有种乎?”这句话根深蒂固的影响着很多人,特别是中国人。

口号绝对没有任何不对,但是心态却的的确确的不对了。

这是为什么?让我慢慢给你说。

很多年轻人不明白“创业中的第一桶金”是什么概念,特别是对于那些梦想做大事,梦想着成为像乔布斯马云这样能够改变整个世界的改革者和成功者的年轻人。

他们往往过于理想化,这事实上和一个成语没有什么区别,哪个成语?纸上谈兵!又或者,好高骛远。

第20章 OPC设备

第20章  OPC设备

第二十章 OPC 设备20.1 OPC 简介20.1.1 什么是OPCOPC 是OLE for Process Control 的缩写,即把OLE 应用于工业控制领域。

OLE 原意是对象链接和嵌入,随着OLE 2的发行,其范围已远远超出了这个概念。

现在的OLE 包容了许多新的特征,如统一数据传输、结构化存储和自动化,已经成为独立于计算机语言、操作系统甚至硬件平台的一种规范,是面向对象程序设计概念的进一步推广。

OPC 建立OLE 规范之上,它为工业控制领域提供了一种标准的数据访问机制。

工业控制领域用到大量的现场设备,在OPC 出现以前,软件开发商需要开发大量的驱动程序来连接这些设备。

即使硬件供应商在硬件上做了一些小小改动,应用程序就可能需要重写;同时,由于不同设备甚至同一设备不同单元的驱动程序也有可能不同,软件开发商很难同时对这些设备进行访问以优化操作。

硬件供应商也在尝试解决这个问题,然而由于不同客户有着不同的需要,同时也存在着不同的数据传输协议,因此也一直没有完整的解决方案。

自OPC 提出以后,这个问题终于得到解决。

OPC 规范包括OPC 服务器和OPC 客户两个部分,其实质是在硬件供应商和软件开发商之间建立了一套完整的“规则”,只要遵循这套规则,数据交互对两者来说都是透明的,硬件供应商无需考虑应用程序的多种需求和传输协议,软件开发商也无需了解硬件的实质和操作过程。

OPC的优越性是显而易见的:●硬件供应商只需提供一套符合OPC Server规范的程序组,无需考虑工程人员需求。

●软件开发商无需重写大量的设备驱动程序。

●工程人员在设备选型上有了更多的选择。

●OPC扩展了设备的概念。

只要符合OPC服务器的规范,OPC客户都可与之进行数据交互,而无需了解设备究竟是PLC还是仪表,甚至在数据库系统上建立了OPC规范,OPC客户也可与之方便地实现数据交互。

20.1.2 OPC的适用范围OPC设计者们最终目标是在工业领域建立一套数据传输规范,并为之制定了一系列的发展计划。

Luogu深入浅出程序设计竞赛题解目录

Luogu深入浅出程序设计竞赛题解目录

Luogu深⼊浅出程序设计竞赛题解⽬录第⼀部分语⾔⼊门第⼀章简简单单写程序第⼆章顺序结构程序设计例题P5703 红 例5P5704 红 例6P5705 红 例71P5706 红 例8P1425 红 例10P3954 红 例11(NOIP 2017 PJ T1)P5707 橙 例12习题P5708 红 习2第三章分⽀结构程序设计例题P5710 红 例1P5711 红 例2P5712 红 例3P5713 红 例5P5714 红 例7P5715 红 例8P5716 红 例9P1085 红 例10(NOIP 2004 PJ T1)P1909 红 例11(NOIP 2016 PJ T1)P1055 橙 例12(NOIP 2008 PJ T1)习题P1422 红 习4P1424 红 习5P1888 红 习6P1046 红 习7(NOIP 2005 PJ)P5717 橙 习8P4414 红 习9(COCI 2006)第四章循环结构程序设计例题P5718 红 例2P5719 红 例3P5720 红 例4P5721 红 例6P1980 红 例8P1035 红 例9(NOIP 2002 PJ)P2669 红 例10(NOIP 2015 PJ T1)P5722 红 例11P5723 橙 例13习题P1307 红 习3(NOIP 2011 PJ T1)P1720 红 习4P5724 红 习5P1420 红 习6P1075 红 习7(NOIP 2012 PJ T1)P5725 红 习8P5726 橙 习9P4956 红 习10(COCI 2017)P1089 红 习11(NOIP 2004 TG T1)第五章数组与数据批量储存习题第六章字符串与⽂件操作第七章函数与结构体例题习题第⼆部分初涉算法第⼋章模拟与⾼精度例题习题第九章排序例题习题第⼗章暴⼒枚举例题习题第⼗⼀章递推与递归例题习题第⼗⼆章贪⼼例题习题另⼀篇题解:第⼗三章⼆分查找与⼆分答案例题习题第⼗四章搜索例题习题第三部分简单数据结构第⼗五章线性表例题习题第⼗六章⼆叉树例题习题第⼗七章集合例题习题第⼗⼋章图的基本应⽤例题习题第四部分基础数学与数论后⾯的讲解居多。

第二十讲 线性表15

第二十讲 线性表15
1 2 3
2 3
3 1
1 2
拉丁方阵问题
• 请利用循环链表来解决:latin.c
魔术师发牌问题
• 请利用循环链表来解决:Magician.c
拉丁方阵问题
• 拉丁方阵是一种n×n的方阵,方阵中恰有n种不同 的元素,每种元素恰有n个,并且每种元素在一行 和一列中 恰好出现一次。著名数学家和物理学家 欧拉使用拉丁字母来作为拉丁方阵里元素的符号 ,拉丁方阵因此而得名。 • 例如下图是一个3×3的拉丁方阵:
数据结构和算法
作者:小甲鱼
让编程改变世界
Change the world by program
题外话
• 今天小甲鱼看到到微博有朋友在问,这个《数据 结构和算法》系列课程有木有JAVA版本的? • 因为这个问题之前也有一些朋友问过,所以咱在 这里统一说下哈。 • 这个你要这么想,我们怀着民族情结看日本AV的 时候,我们固然是完全不知道她们在所啥的,这 点你要承认,但是我们对于师生,地铁,公车, 办公室等的剧情确实了然指掌,完全可以忽略语 言的障碍!那么,编程为什么不副牌中的13张黑牌,预 先将他们排好后叠放在一起,牌面朝下。对观众 说:“我不看牌,只数数就可以猜到每张牌是什 么,我大声数数,你们听,不信?现场演示。” 魔术师将最上面的那张牌数为1,把他翻过来正好 是黑桃A,将黑桃A放在桌子上,第二次数1,2,将 第一张牌放在这些牌的下面,将第二张牌翻过来 ,正好是黑桃2,也将它放在桌子上这样依次进行 将13张牌全部翻出,准确无误。 • 问题:牌的开始顺序是如何安排的?

1队列

1队列

第一讲队列前言什么是数据结构128313245678站队家谱城市交通什么是数据结构数据结构是计算机存储数据、组织数据的方式。

数据结构是指相互之间存在一种或多种关系的数据元素的集合以及该集合中数据元素之间的关系。

记为:Data_Struct=(D,R)D是数据元素的集合;R是数据元素之间的关系的有限集合。

如:家谱D={1,2,3,4,5,6,7,8}R={<1,2>,<1,3>,<2,4>,<2,5>,<2,6>,<3,7>,<3,8>}什么是数据结构数据结构分为逻辑结构和物理结构逻辑结构:反映数据元素之间的逻辑关系(先后关系),与在计算机中的存储位置无关。

包括:集合,线性结构,树形结构,图形结构。

通常所说的数据结构指的是逻辑结构什么是数据结构①集合结构:元素之间没有关系。

②线性结构:元素是一对一的关系。

③树形结构:元素存在着一对多的关系。

④图形结构:元素是多对多的关系。

12341 2341235461234图1图2图3图4什么是数据结构物理结构:数据的逻辑结构在计算机存储空间中的存放形式:顺序结构和链式结构。

顺序存储结构:是把数据元素放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。

链式存储结构:把数据元素放在任意的存储单元了,这组存储单元可以是连续的,也可以是不连续的。

物理结构:顺序存储结构物理结构:链式存储结构第一部分线性结构—队列线性结构(线性表)是最基本、最简单、最常用的数据结构。

所有元素排成一排。

除了第一个元素都有“前一个元素”,除了最后一个都有“后一个元素”。

常用的线性表:栈,队列,链表2020/1/13《数据结构与算法》11赵宗昌队列(queue )队列是一种运算受限的线性表:在一端删除(队首head ),另一端插入(队尾tail )操作原则:先进先出FIFO队列的两个操作:出队与入队队首:head (习惯指向队首元素)队尾:tail (指向队尾元素的后一个空位置)head tailq[i]16102130下标i012345678int q[100001];headq[i]16102130下标i012345678tail出队列(注意顺序):t=q[head];head=head+1;或:t=q[head++]入队列(注意顺序):q[tail]=x;tail++;或:q[tail++]=x队列非空:Head<tail【例1】卡片游戏桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n;当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

60 17 29 38
【例2】 有一组关键字为: (26,38,73,21,54,35,167,32,7,223,52) 试用线性探查法解决冲突,并构造这组关键字的哈希表。设哈 希表的长度为15。 分析:当哈希表的长度为15时,显然P取13比较合理。利用哈 希函数H (K) = K %13进行计算,可知上述关键字序列所对应的哈希地 址如下: 关键字 哈希地址 26 0 38 12 73 8 21 8 54 2 35 9 167 11 32 6 7 7 223 2 52 0
地址 年份 保费 01 1 ……. 02 2 ……. 03 3 ……. …… ……. …… 20 20 ……
桂林电子科技大学信息科技学院 赵莹莹
9.4.2 散列函数的构造方法 散列函数的构造方法(2)
取关键字平方后的中间几位为哈希函数。 (2)平方取中法——取关键字平方后的中间几位为哈希函数。 平方取中法 取关键字平方后的中间几位为哈希函数 如:K=308,K2=94864,H(K)=486 K=308, =94864, 例如,关键字为3632,则36322=13191424。 H(3632)=914。 (3) 除后余数法 除后余数法——设散列表的地址空间大小为m,取关键 设散列表的地址空间大小为m 设散列表的地址空间大小为 字被不大于m的质数p 除后所得的余数为哈希函数, 字被不大于m的质数p, 除后所得的余数为哈希函数, 即: H(K)=K MOD p (p ≤ m )
表项序号 H(K)=int(K/3)+1
1 01 02
2 05
3
4
09 11
5
13
6 16
7 19
8 21
9 26
10 27
11 31
12
冲突:两个不同的关键字具有相同的存储位置。 冲突:两个不同的关键字具有相同的存储位置。 为了有效地使用散列技术,需要解决两方面的问题: 为了有效地使用散列技术,需要解决两方面的问题: •构造好的哈希函数,使冲突的现象尽可能的少; 构造好的哈希函数,使冲突的现象尽可能的少; 构造好的哈希函数 •设计有效的解决冲突的方法。 设计有效的解决冲突的方法。 设计有效的解决冲突的方法
数据结构第二十讲
桂林电子科技大学信息科技学院 赵莹莹
第九章 查找
桂林电子科技大学信息科技学院 赵莹莹
本章要点
• • • • • • • • • • • • • • • • 9.1 基本概念 9.2 顺序表的静态查找 9.2.1 简单顺序查找 9.2.2 二分查找(折半查找)(重点) 9.2.3 分块查找 9.3 树表的动态查找(简单掌握二叉排序树) 9.3.1 二叉排序树 9.3.2 平衡二叉树 9.3.3 B-树 9.4 散列表的查找 9.4.1 散列表的定义 9.4.2 散列函数的构造 9.4.3 冲突的解决方法 9.4.4 散列表的查找及性能分析 9.4.5 有关散列表的算法 本章小结
桂林电子科技大学信息科技学院 赵莹莹
9.4.1 散列表的基本概念
散列表(HASH),即哈希表,或杂凑表。 通过一个函数直接将记录关键字值映射成一块连续存储空间的地址,这个函 数称为Hash(哈希)函数,或散列函数,或杂凑函数。 • H:K->A • H(k) • 数据表的这种存储方式叫散列存储,或哈希存储。 • 数据表的存储空间称为散列表,或Hash表。 • 哈希表技术的主要目标是提高查找效率,即缩短查表和填表的时间。 • •
桂林电子科技大学信息科技学院 赵莹莹
0 1
为表长, 设散列函数 H(k)=k % m (m为表长 设m=11) ( ) 为表长 若发生冲突, 若发生冲突,设发生冲突的地址为 d , 则沿着一个探查 序列逐个探查,那么,探查的地址序列为: 序列逐个探查,那么,探查的地址序列为:
2 3 4 5 6 7 8 9 10
桂林电子科技大学信息科技学院 赵莹莹
课堂练习: 课堂练习:
• ASL=?
桂林电子科技大学信息科技学院 赵莹莹
本章要点
• • • • • • • • • • • • • • • • 9.1 基本概念 9.2 顺序表的静态查找 9.2.1 简单顺序查找 9.2.2 二分查找 9.2.3 分块查找 9.3 树表的动态查找 9.3.1 二叉排序树 9.3.2 平衡二叉树 9.3.3 B-树 9.4 散列表的查找 9.4.1 散列表的定义 9.4.2 散列函数的构造 9.4.3 冲突的解决方法 9.4.4 散列表的查找及性能分析 9.4.5 有关散列表的算法 本章小结
60 17 29
d +1, d +2, d +3 ,…, m-1 , 0, 1, …, d -1.
桂林电子科技大学信息科技学院 赵莹莹
0 1
设散列函数 H(k)=k MOD 11
2 3 4 5 6 7 8 9 10
桂林电子科技大学信息科技学院 赵莹莹
60、17、29、38在散列表中的位置 在散列表中的位置。 求: 60、17、29、38在散列表中的位置。 H(60)= 60 mod 11 = 5 H(17)= 17 mod 11 = 6 H(29)= 29 mod 11 = 7 H(38)= 38 mod 11 = 5
例:散列表的长度为25,那么散列函数可以为: 散列表的长度为25,那么散列函数可以为: 25 H(K)=key% H(K)=key%23 )=key P取与表长最接近的那个数
桂林电子科技大学信息科技学院 赵莹莹
本章要点
• • • • • • • • • • • • • • • • 9.1 基本概念 9.2 顺序表的静态查找 9.2.1 简单顺序查找 9.2.2 二分查找 9.2.3 分块查找 9.3 树表的动态查找 9.3.1 二叉排序树 9.3.2 平衡二叉树 9.3.3 B-树 9.4 散列表的查找 9.4.1 散列表的定义 9.4.2 散列函数的构造 9.4.3 冲突的解决方法 9.4.4 散列表的查找及性能分析 9.4.5 有关散列表的算法 本章小结
学号 34 56 78 91
Hash [9] 下标 0 1
姓名 张三 李四 王二 余六
2 3
英语成绩 68 74 66 80
4 5
高数成绩 78 56 88 67
6 7 8
哈希函数: 哈希函数:
根据关键字直接计算出元素所在位置的函数。 根据关键字直接计算出元素所在位置的函数。 例如:设哈希函数为: 例如:设哈希函数为: int(K/3)+1 01、02、05、09、11、13、16、19、21、26、27、31、 则构造 01、02、05、09、11、13、16、19、21、26、27、31、的散列表 哈希表) (哈希表)为:
桂林电子科技大学信息科技学院 赵莹莹
9.4.3 解决冲突的方法
• 假设哈希表的地址范围为0~m-l,当对给定的关键字k,由哈希函数H(k) 算出的哈希地址为i(0≤i≤m-1)的位置上已存有记录,这种情况就是 冲突现象。 • 处理冲突就是为该关键字的记录找到另一个“空”的哈希地址。即通过 一个新的哈希函数得到一个新的哈希地址。如果仍然发生冲突,则再求 下一个,依次类推。直至新的哈希地址不再发生冲突为止。 解决冲突的方法:
100 150 120 180
110
130
160
200
桂林电子科技大学信息科技学院 赵莹莹
算法性能分析: 算法性能分析:
100 60 40 80 120 150 180
70
90
110
130
160
200
• ASL=? • ASL=1/13 * (1+2+2+3+3+3+3+4+4+4+4+4+4+4)=41 /13
14
0
15
1
21
2
3
3
32
4
42
5
13
6
• ASL=(1/7)*(1+1+1+1+3+1+6)=2
桂林电子科技大学信息科技学院 赵莹莹
(2)平方探查法 d+1 设 发 生 冲 突 的 地 址 为 d, 则 平 方 探 查 法 的 探 查 序 列 为 : d+12, d+2 直到找到一个空闲位置为止。 d+22,…直到找到一个空闲位置为止。 直到找到一个空闲位置为止 平方探查法的数学描述公式为: 平方探查法的数学描述公式为: d0=H(k) di=(d0+i2) % m (1≤i≤m-1) ≤i≤m-
桂林电子科技大学信息科技学院 赵莹莹
9.4.2 散列函数的构造方法 散列函数的构造方法(1)
直接定址法——取关键字或关键字的某个线性函数值为散列地址,即 取关键字或关键字的某个线性函数值为散列地址, (1 ) 直接定址法 取关键字或关键字的某个线性函数值为散列地址 =A*K+B或 其中A 为常数) H(K)=K 或 H(K)=A*K+B或 H(K)=K+C ;(其中A、B为常数) 直接定址哈希函数示例:某公司一险种投保费交纳表(20年 直接定址哈希函数示例:某公司一险种投保费交纳表(20年),将年份作关键 哈希函数取关键字本身,若查找第3年应交纳的保费,只要查找表的第3 字,哈希函数取关键字本身,若查找第3年应交纳的保费,只要查找表的第3项 即可。 即可。
桂林电子科技大学信息科技学院 赵莹莹
9.4.3 解决冲突的方法
1) 线性探查法 基本思想是:将哈希表看成是一个循环表。若地址为d(d=H(K))的单 元发生冲突,则依次探查下述地址单元d+1 , d+2 , … , m-1 , 0 , 1 , … , d-1 (m为哈希表的长度)直到找到一个空单元或查找到关 键字为key的元素为止。若沿着该探查序列查找一遍之后,又回到了 地址d,则表示哈希表的存储区已满。
相关文档
最新文档