第2章 常用数据结构及其运算3(查找和排序)
全国计算机二级考点及基础知识

第1章数据结构与算法经过对部分考生的调查以及对近年真题的总结分析,笔试部分经常考查的是算法复杂度、数据结构的概念、栈、二叉树的遍历、二分法查找,读者应对此部分进行重点学习。
详细重点学习知识点:1.算法的概念、算法时间复杂度及空间复杂度的概念2.数据结构的定义、数据逻辑结构及物理结构的定义3.栈的定义及其运算、线性链表的存储方式4.树与二叉树的概念、二叉树的基本性质、完全二叉树的概念、二叉树的遍历5.二分查找法6.冒泡排序法1.1算法考点1 算法的基本概念考试链接:考点1在笔试考试中考核的几率为30%,主要是以填空题的形式出现,分值为2分,此考点为识记内容,读者还应该了解算法中对数据的基本运算。
计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。
1.算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。
2.算法的基本要素:(1)算法中对数据的运算和操作一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构。
在一般的计算机系统中,基本的运算和操作有以下4类:算术运算、逻辑运算、关系运算和数据传输。
(2)算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构。
描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等。
一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。
考点2 算法复杂度考试链接:考点2在笔试考试中,是一个经常考查的内容,在笔试考试中出现的几率为70%,主要是以选择的形式出现,分值为2分,此考点为重点识记内容,读者还应该识记算法时间复杂度及空间复杂度的概念。
1.算法的时间复杂度算法的时间复杂度是指执行算法所需要的计算工作量。
同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。
这表明使用绝对的时间单位衡量算法的效率是不合适的。
撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法"运行工作量"的大小,只依赖于问题的规模(通常用整数n表示),它是问题规模的函数。
C#常用数据结构与算法

C常用数据结构与算法1.数据结构1.1 数组- 定义- 常用操作:访问元素、添加元素、删除元素、查找元素 - 应用场景1.2 链表- 定义- 常用操作:插入节点、删除节点、查找节点- 单链表、双链表、循环链表的区别- 应用场景1.3 栈- 定义- 常用操作:入栈、出栈、查看栈顶元素、判断栈是否为空 - 可使用数组或链表实现- 应用场景1.4 队列- 定义- 常用操作:入队、出队、查看队首元素、查看队尾元素、判断队列是否为空- 可使用数组或链表实现- 应用场景1.5 哈希表- 定义- 常用操作:插入键值对、删除键值对、根据键查找值、计算哈希值- 冲突解决方法:开放寻址法、链地质法- 应用场景2.常用算法2.1 排序算法- 冒泡排序- 插入排序- 选择排序- 快速排序- 归并排序- 堆排序2.2 查找算法- 线性查找- 二分查找- 插值查找- 哈希查找- 树查找(二叉搜索树、平衡二叉树、红黑树)2.3 图算法- 广度优先搜索- 深度优先搜索- 最短路径算法(Dijkstra算法、Floyd-Warshall算法) - 最小树算法(Prim算法、Kruskal算法)2.4 动态规划- 背包问题- 最长公共子序列- 最大子数组和3.附件:无4.法律名词及注释:- C: C是一种通用的、面向对象的编程语言,由微软公司开发。
- 数据结构:数据结构是计算机中组织和存储数据的方式。
- 算法:算法是解决问题的一系列步骤或过程。
- 数组:数组是一种线性数据结构,由一系列元素组成,每个元素都有唯一的索引值。
- 链表:链表是一种线性数据结构,由一系列节点组成,每个节点都包含数据和指向下一个节点的指针。
- 栈:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行操作。
- 队列:队列是一种先进先出(FIFO)的数据结构,只能在队首和队尾进行操作。
- 哈希表:哈希表是一种使用哈希函数将键映射到值的数据结构。
- 排序算法:排序算法是将一组数据按照特定顺序排列的算法。
数据结构——查找,顺序查找,折半查找

实验五查找的应用一、实验目的:1、掌握各种查找方法及适用场合,并能在解决实际问题时灵活应用。
2、增强上机编程调试能力。
二、问题描述1.分别利用顺序查找和折半查找方法完成查找。
有序表(3,4,5,7,24,30,42,54,63,72,87,95)输入示例:请输入查找元素:52输出示例:顺序查找:第一次比较元素95第二次比较元素87 ……..查找成功,i=**/查找失败折半查找:第一次比较元素30第二次比较元素63 …..2.利用序列(12,7,17,11,16,2,13,9,21,4)建立二叉排序树,并完成指定元素的查询。
输入输出示例同题1的要求。
三、数据结构设计(选用的数据逻辑结构和存储结构实现形式说明)(1)逻辑结构设计顺序查找和折半查找采用线性表的结构,二叉排序树的查找则是建立一棵二叉树,采用的非线性逻辑结构。
(2)存储结构设计采用顺序存储的结构,开辟一块空间用于存放元素。
(3)存储结构形式说明分别建立查找关键字,顺序表数据和二叉树数据的结构体进行存储数据四、算法设计(1)算法列表(说明各个函数的名称,作用,完成什么操作)序号 名称 函数表示符 操作说明1 顺序查找 Search_Seq 在顺序表中顺序查找关键字的数据元素2 折半查找 Search_Bin 在顺序表中折半查找关键字的数据元素3 初始化 Init 对顺序表进行初始化,并输入元素4 树初始化 CreateBST 创建一棵二叉排序树5 插入 InsertBST 将输入元素插入到二叉排序树中6 查找 SearchBST在根指针所指二叉排序树中递归查找关键字数据元素 (2)各函数间调用关系(画出函数之间调用关系)typedef struct { ElemType *R; int length;}SSTable;typedef struct BSTNode{Elem data; //结点数据域 BSTNode *lchild,*rchild; //左右孩子指针}BSTNode,*BSTree; typedef struct Elem{ int key; }Elem;typedef struct {int key;//关键字域}ElemType;(3)算法描述int Search_Seq(SSTable ST, int key){//在顺序表ST中顺序查找其关键字等于key的数据元素。
数据结构_查找原理及典型的查找算法

3.对非线性(树)结构如何进行折半查找? 可借助二叉排序树来查找(属动态查找表形式)。
9.1.2 有序表的查找
折半查找过程可以描述为一棵二叉树
折半查找的判定树 如:(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)
总之:
二叉排序树既有类似于折半查找的特性,又采用了链 表存储,它是动态查找表的一种适宜表示。
一、二叉排序树
(3)构造过程: 例:输入序列{45,12,37,3,53,100,24}
45
12
53
3
37
100
24
一、二叉排序树
(2)非递归查找过程 BiTree SearchBST(BiTree T,KeyType key){
CH9 查找
查找的基本概念 9.1 静态查找表
9.1.1 顺序查找 9.1.2 有序表的查找 9.1.3 索引顺序表的查找
9.2 动态查找表
9.2.1 二叉排序树和平衡二叉树 9.2.2 B-和B+树
9.3 哈希表
查找的基本概念
1.查找表 2.查找
关键字 主关键字 次关键字
}
9.2.1 二叉排序树和平衡二叉树
一、二叉排序树 二、平衡二叉树
一、二叉排序树
1.定义、特点、构造过程
(1)定义 二叉排序树或者是一棵空树,或是具有下列性质的二叉树:
若左子树非空,则左子树上所有结点的值均小于它的 根结点的值。
若右子树非空,则右子树上所有结点的值均大于它的 根结点的值。
有序/无序表 有序表
顺序/链式存 储
顺序存储
分块查找 介于二者之间 表中元素逐段有序 顺序/链式存储
数据结构中的查找算法总结

数据结构中的查找算法总结静态查找是数据集合稳定不需要添加删除元素的查找包括:1. 顺序查找2. 折半查找3. Fibonacci4. 分块查找静态查找可以⽤线性表结构组织数据,这样可以使⽤顺序查找算法,再对关键字进⾏排序就可以使⽤折半查找或斐波那契查找等算法提⾼查找效率,平均查找长度:折半查找最⼩,分块次之,顺序查找最⼤。
顺序查找对有序⽆序表均适⽤,折半查找适⽤于有序表,分块查找要求表中元素是块与块之间的记录按关键字有序动态查找是数据集合需要添加删除元素的查找包括: 1. ⼆叉排序树 2. 平衡⼆叉树 3. 散列表 顺序查找适合于存储结构为顺序存储或链接存储的线性表。
顺序查找属于⽆序查找算法。
从数据结构线形表的⼀端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相⽐较,若相等则表⽰查找成功 查找成功时的平均查找长度为: ASL = 1/n(1+2+3+…+n) = (n+1)/2 ; 顺序查找的时间复杂度为O(n)。
元素必须是有序的,如果是⽆序的则要先进⾏排序操作。
⼆分查找即折半查找,属于有序查找算法。
⽤给定值value与中间结点mid的关键字⽐较,若相等则查找成功;若不相等,再根据value 与该中间结点关键字的⽐较结果确定下⼀步查找的⼦表 将数组的查找过程绘制成⼀棵⼆叉树排序树,如果查找的关键字不是中间记录的话,折半查找等于是把静态有序查找表分成了两棵⼦树,即查找结果只需要找其中的⼀半数据记录即可,等于⼯作量少了⼀半,然后继续折半查找,效率⾼。
根据⼆叉树的性质,具有n个结点的完全⼆叉树的深度为[log2n]+1。
尽管折半查找判定⼆叉树并不是完全⼆叉树,但同样相同的推导可以得出,最坏情况是查找到关键字或查找失败的次数为[log2n]+1,最好的情况是1次。
时间复杂度为O(log2n); 折半计算mid的公式 mid = (low+high)/2;if(a[mid]==value)return mid;if(a[mid]>value)high = mid-1;if(a[mid]<value)low = mid+1; 折半查找判定数中的结点都是查找成功的情况,将每个结点的空指针指向⼀个实际上不存在的结点——外结点,所有外界点都是查找不成功的情况,如图所⽰。
数据结构查找知识点总结

数据结构查找知识点总结查找是在一组数据中寻找特定元素或特定条件的操作。
1. 线性查找:从列表、数组或链表的头部开始逐个检查元素,直到找到目标元素或搜索结束。
最坏情况下需要遍历整个数据集。
- 特点:简单易懂但效率低。
- 时间复杂度:O(n)。
2. 二分查找:对有序的列表、数组或链表,采用分治思想,通过比较目标元素和中间元素的大小关系,缩小搜索范围,直到找到目标元素或搜索结束。
- 前提条件:数据必须有序。
- 特点:效率高,但要求数据有序,且适用于静态数据集。
- 时间复杂度:O(log n)。
3. 哈希查找:通过将元素进行哈希函数映射,将元素存储在哈希表中,以快速定位目标元素。
- 特点:查找速度快,适用于动态数据集。
- 时间复杂度:平均情况下是O(1),最坏情况下是O(n)(哈希冲突)。
4. 二叉查找树:一种有序的二叉树结构,左子树的所有节点的值都小于根节点的值,右子树的所有节点的值都大于根节点的值。
- 特点:可用于快速插入、删除和查找元素。
- 时间复杂度:平均情况下是O(log n),最坏情况下是O(n)(树退化为链表)。
5. 平衡二叉查找树:通过在二叉查找树的基础上对树进行平衡操作,使得树的高度保持在较小范围,从而提高查找效率。
- 特点:保持查找性能稳定,适用于动态数据集。
- 时间复杂度:平均情况下是O(log n),最坏情况下是O(log n)(由于树平衡操作的代价,最坏情况下仍可达到O(n))。
6. B树/B+树:一种多路搜索树,通过增加每个节点的子节点数目,减少树的高度,从而提高查找效率。
常用于磁盘索引等场景。
- 特点:适用于大规模数据集以及磁盘访问等场景,对于范围查找尤为高效。
- 时间复杂度:平均情况下是O(log n),最坏情况下是O(log n)。
7. 字典树(Trie树):一种通过字符串的前缀来组织和查找数据的树形数据结构。
- 特点:适用于按前缀匹配查找、排序等操作。
- 时间复杂度:查找操作的时间复杂度与字符串长度有关。
数据结构查找与排序

第二部分 排序
• 各种排序算法的特性
– 时间性能(最好、最坏、平均情况) – 空间复杂度 – 稳定性
• 常见排序算法
– 堆排序-堆的定义,创建堆,堆排序(厦大3次,南航2次,南大3次) – 快速排序 – 基数排序 – 插入排序 – 希尔排序 – 冒泡排序 – 简单选择排序 – 归并排序
一、基于选择的排序
• 快速排序算法关键字的比较和交换也是跳跃式进行的,所以快速排序 算法也是一种不稳定的排序方法。
• 由于进行了递归调用,需要一定数量的栈O(log2n)作为辅助空间
例如
1、快速排序算法在 数据元素按关键字有序的 情况下最不利于发挥其长处。
2、设关键字序列为:49,38,66,80,70,15,22,欲对该序列进行从小到大排序。 采用待排序列的第一个关键字作为枢轴,写出快速排序法的一趟和二趟排序之 后的状态
49
49
38
66
38
10
90
75
10
20
90
75
66
20
10
38
20
90
75
66
49
2.序列是堆的是( C )。 A.{75, 65, 30, 15, 25, 45, 20, 10} B.{75, 65, 45, 10, 30, 25, 20, 15} C.{75, 45, 65, 30, 15, 25, 20, 10} D.{75, 45, 65, 10, 25, 30, 20, 15}
➢ 依靠“筛选”的过程
➢ 在线性时间复杂度下创建堆。具体分两步进行: 第一步,将N个元素按输入顺序存入二叉树中,这一步只要求满 足完全二叉树的结构特性,而不管其有序性。
第二步,按照完全二叉树的层次遍历的反序,找到第一个非叶子结点, 从该结点开始“筛选”,调整各结点元素,然后按照反序,依次做筛选,直到做 完根结点元素,此时即构成一个堆。
数据结构的查找算法

数据结构的查找算法在计算机科学中,数据结构是用于组织和存储数据的一种方式。
查找算法是数据结构中的重要部分,它用于在数据集合中搜索特定元素或信息。
本文将介绍几种常见的数据结构查找算法,包括线性查找、二分查找、哈希查找以及树结构的查找算法。
1. 线性查找线性查找是一种简单直观的查找方法,适用于无序的数据集合。
其基本思想是从数据集合的第一个元素开始逐个比较,直到找到目标元素或者遍历完整个数据集合。
由于线性查找需要遍历所有元素,所以时间复杂度为O(n),其中n为数据集合的大小。
2. 二分查找二分查找是一种高效的查找算法,但它要求数据集合中的元素必须有序。
具体实现方式是将数据集合分为两半,然后与目标元素进行比较,不断缩小查找范围,直到找到目标元素或者确定目标元素不存在。
由于每次都将查找范围减小一半,所以时间复杂度为O(log n),其中n为数据集合的大小。
3. 哈希查找哈希查找利用哈希函数将目标元素映射到哈希表中的特定位置,从而快速定位目标元素。
哈希表是一种以键-值对形式存储数据的数据结构,可以快速插入和删除元素,因此在查找时具有良好的性能。
哈希查找的时间复杂度为O(1),但在处理哈希冲突时可能会影响性能。
4. 树结构的查找算法树是一种常见的数据结构,其查找算法主要包括二叉搜索树、平衡二叉搜索树以及B树和B+树。
二叉搜索树是一种有序的二叉树,左子树的所有节点值都小于根节点,右子树的所有节点值都大于根节点。
通过比较目标元素与节点的值,可以快速定位目标元素。
平衡二叉搜索树是为了解决二叉搜索树在某些情况下可能出现的退化情况,通过旋转操作保持树的平衡性。
B树和B+树是一种多路搜索树,它们可以减少磁盘I/O操作,适用于大规模数据的查找。
综上所述,数据结构的查找算法是计算机科学中的重要内容。
不同的查找算法适用于不同的场景,选择合适的算法可以提高查找效率。
在实际应用中,需要根据数据集合的特点及查找需求来选择合适的算法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.7 查找
关键字: 是数据元素(或记录)中的某个数 据项的值,用以标识一个数据元素(或记录) 。 例如:银行帐户中的帐号是。
查找:根据给定的值,在查找表中确定一个 关键字等于给定值的记录或数据元素的过 程。
2.7 查找
•平均查找长度 (average search length,ASL): 衡量查找算法的优劣标准。对于一个含有n个元素的查找表, 查找成功时的平均查找长度可表示为:
当选择的哈希函数能够得到均匀的地址分布时, 在查找 过程中可以不做多次探测。
230
216
四、哈希表及其查找
2.7 查找
1. 哈希表
前面介绍的静态查找和动态查找的特点是:为了从查找 表中找到关键字值等于某个给定值的记录,都要经过一系 列的关键字比较,以确定待查记录的存储位置或查找失败, 查找所需时间总是与比较次数有关。
如果将记录的存储位置与它的关键字之间建立一种确定 的函数关系H,即:
采用的哈希函数是 h(x) = x % 73 + 13420
则有: hash(12361) = hash(07250) = hash(03309) = hash(30976) = 13444。
四、哈希表及其查找
2.7 查找
• 对不同的关键字, 通过哈希函数的计算, 得到了同一哈希 地址。这种现象称为冲突。
这类哈希函数是一对一的映射,一般不会产生冲突。 但是,它要求哈希地址空间的大小与关键字集合的 大小相同。
四、哈希表及其查找
2.7 查找
例: 有一组关键字如下:
{ 942148, 941269, 940527, 941630, 941805, 941558, 942047, 940001 }
哈希函数为 H (key) = key - 940000
h ( 962148 ) = 962148 % 23 = 12。
(3)数字分析法(略) (4)平方取中法(略) (5)折叠法(略)
四、哈希表及其查找 3.哈希冲突解决方法
(1) 开放定地址法
2.7 查找
哈希地址计算式: Hi=(H(key)+di)%m
i=1,2,…,k(k<=m-1)
其中,增量序列di的取值方法有三种: di=1,2,3,..,m-1 (线性探测再散列) di=12,-12,22,-22,…,k2,-k2 (k<=m/2)(二次探测再散列) di=随机数序列(随机探测再散列)
0
1
2
3
Attlee Burke Broad Blum
4
Ekers
(1)
(1)
(2)
(3)
(1)
5
6
7
8
9
Alton Ederly Hecht
(6)
(3)
(1)
四、哈希表及其查找
2.7 查找
(2) 链地址法
示例:给出一组记录,关键字为: { Burke, Ekers, Broad, Blum, Attlee, Alton, Hecht, Ederly }。 哈希函数为:
else if(r[mid].key>k) high=mid-1;/*在左子区间中查找*/
else low=mid+1; /*在右子区间中查找*/
}
return 0; /*查找失败*/
}
2.7 查找
3、分块查找
又称索引顺序查找。性能介于顺序查找和对 分查找之间。适用于顺序表,也适用于线性链表。
分块查找要求查找表“分块有序”,即把查找 表分成若干个块,每个块中关键字不一定有序, 但是前一个块中的最大关键字必须小于后一块中 最小关键字。
• 哈希表 是根据哈希函数建立的查找表。
哈希表即是一种存储形式,又是一种查找方法, 通常将这种查找方法称为哈希查找。
四、哈希表及其查找
2.7 查找
使用哈希表方法进行查找不必进行多次关键字的比较,查找 速度比较快。 但问题是会产生冲突。 示例:有一组表项,其关键字分别是 12361, 07251, 03309, 30976
2.7 查找
三、动态查找表
2.7 查找
•动态查找表的特点:表本身是在查找的过程中动态生 成的。
• 以上讲的静态查找表的三种查找中,对分查找效率最
高,根本原因是查找表的数据元素有序排列, 但是需
要顺序存储,对于动态查找表来讲这种结构意味着要
频繁地移动数据元素,为了解决这个问题,我们想到
了二叉排序树(二叉查找树)。
H(942148) = 2148 H (941269) = 1269 H (940527) = 527 H (941630) = 1630 H (941805) = 1805 H (941558) = 1558 H (942047) = 2047 H (940001) = 1 可以按计算出的地址存放记录。
存储位置=H(关键字值) 在查找时,只需要根据对应关系计算出给定的关键字值 key对应的值H(key),就可以得到记录的存储位置。这就 是本节将要介绍的哈希表查找方法的基本思想。
四、哈希表及其查找
2.7 查找
哈希函数 我们将记录的关键字值与记录的存储 位置对应起来的关系H称为哈希函数,H(k)的结 果称为哈希地址。
•哈希函数计算出来的地址应能均匀分布在整个地址空
间中 : 若 key 是从关键字集合中随机抽取的一个关键 字, 哈希函数应能以等概率取0 到 m-1 中的每一个值。
四、哈希表及其查找
2.7 查找
(1)直接定址法 取关键字的某个线性变换作为哈希函数:
H(key)=a* key+b ( a, b为常数)
四、哈希表及其查找
2.7 查找
Hash (Burke) = 1 Hash (Ekers) = 4
Hash (Broad) = 1 Hash (Blum) = 1
Hash (Attlee) = 0 Hash (Hecht) = 7 Hash (Alton) = 0 Hash (Ederly) = 4
2.7 查找
//对分法查找
Int binsearch(struct node r[n+1] , element k)
{
int low=1, high=n;
while (low<=high)
{
int mid=(low+high)/2;
/*取区间中点*/
if( r[mid].key= =k)return mid; /*查找成功*/
Hash (x)=ord (x)-ord ('A')。 用它计算可得:
Hash (Burke) = 1 Hash (Ekers) = 4 Hash (Broad) = 1 Hash (Blum) = 1 Hash (Attlee) = 0 Hash (Hecht) = 7 Hash (Alton) = 0 Hash (Ederly) = 4 哈希表为 HT[0:25],m = 26。
•查找表:用于查找的数据元素的集合称为查找表。查 找表由同一类型的数据元素(或记录)构成。
• 查找表的操作: – (1)查询某个“特定的”数据元素是否在查找表 中; – (2)检索某个“特定的”数据元素的各种属性; – (3)在查找表中插入一个数据元素; – (4)从查找表中删除某个数据元素.
• 静态查找表:对查找表只作(1)、(2)操作; • 动态查找表:可以对查找表作(1)-(4)操作。
四、哈希表及其查找
2.7 查找
•开放定地址法-线性探测再散列
假设给出一组记录,它们的关键字为: Burke, Ekers, Broad, Blum, Attlee, Alton, Hecht, Ederly。 采用的哈希函数是:取其第一个字母在字母表中的位置。
Hash (x) = ord (x) - ord (‘A’) //ord ( ) 是求字符内码的函数
key 5 13 17 42 46 55 70 94
12
low=1
34 5 6
low=5
78
high=8
mid = ┗(low+high)/2┛
•对分法查找只适用于顺序存储的有序表,其最大查找次 数为log2n,最小查找次数为1,平均查找次数当n>50时 约为:log2(n+1)-1,时间复杂度为O(log2n)。
n
ASL PiCi i 1
Pi为查找第i个元素的概率 ci为查找第i个元素所经历的比较次数。
一般认为查找每个元素的概率相等,Pi=1/n.
二、静态查找表
2.7 查找
1、线性查找
•将查找表作为一个线性表,可以是顺序表, 也可以是链表,依次用给定的值与查找表中 数据元素的关键字值进行比较,若某个记录 的关键字值与给定值相等,则查找成功,返 回该记录的存储位置,反之,若直到最后一 个记录,其关键字值与给定值均不相等,则 查找失败,返回查找失败标志。
0
Attlee
Alton
1
Burke
Broad
Blum
2
3
4
Ekers
Ederly
5
6
7
Hecht
8
9
Байду номын сангаас
•开放定地址法 •链地址法 •再哈希法* •建立公共溢出区法*
四、哈希表及其查找
2.7 查找
4.结论
哈希表是一种直接计算记录存放地址的方法,它在关键 字与存储位置之间直接建立了映象。哈希表即是一种存 储形式,又是一种查找方法。
2.7 查找
/*线性查找:在表r中查找关键字值为k的元素*/
int seqsearch(node r[n+1],elemtype k)
{