- 任务描述
- 相关知识
- 编程要求
- 测试说明
任务描述
本关要求通过补全函数BSL_FindKey
来实现在已排序的顺序表中查找关键码值为key
的结点并返回该结点的编号。
相关知识
折半查找通常是针对顺序存储的线性表,线性表的结点按关键码从小到大排序,后面称之为折半查找的顺序表。为了简化讨论,假设折半查找的顺序表中每个结点只含一个关键码,关键码为整数。图 1 给出了一个存储了 4 个关键码的折半查找的顺序表的存储结构图。
下面描述了线性表顺序存储的一种实现方案。该实现方案的示意图为:
指针pkey
是存储关键码的连续空间的起始地址,顺序表中当前的关键码的个数由len
给出,该顺序表中最多可存储max
个关键码。
将pkey
、len
、max
组织成一个结构,该结构定义为:
struct BSeqList{
int* pkey; // 指向关键码数组的指针
int len; // 当前元素个数
int max; // 线性表的最大元素数
};
只要给定指向该结构的一指针blist
,就可对线性表进行操作。文章来源:https://www.toymoban.com/news/detail-497683.html
对折半查找的顺序表定义如下操作,各个操作函数的功能详见下面给出的代码文件 BSlist.cpp 的代码框架:文章来源地址https://www.toymoban.com/news/detail-497683.html
BSeqList* BSL_Create(int size);
void BSL_Free(BSeqList* blist);
int BSL_InsKey(BSeqList* blist, int key);
int BSL_FindKey(BSeqList* blist, int key);
int BSL_DelKey(BS
到了这里,关于头歌(C语言)-数据结构与算法-查找-第1关:实现折半查找的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!