赞
踩
散列表是最快的查找数据的方法,没有之一,我们今天来简要
介绍一下这个数据结构。
假设我们现在要存储五个人的身高。如下表
姓名 | 身高 |
---|---|
张三 | 170 |
李四 | 178 |
王五 | 173 |
小明 | 175 |
小红 | 167 |
我们为这五个成绩创建了一个数组
typdef struct height_name{
char name[];
int height;
}height_structure;
height_structure array[5];
我们想要把这五个数据存放到这个数组里面,有人可能会说,挨个放进去就可以了,但是现在有一个问题,当我们挨个放进去之后,下次要取出的时候,我们只有一个名字,我们想通过这个名字来索引这个名字的身高,如何实现呢?这需要挨个进行比较,这是十分耗时的。我们不这样做,我们采取下图所示的存放思想来进行存放。
我们通过一个散列函数来将我们的数据的键(姓名)对应到数组的一个索引,并且将这个数据存储到这个索引在数组中对应的存储空间,这样我们下次给出姓名并通过散列函数便可以直接得到对应的数据在数组中的索引,然后直接从数组中读出这个数据来,所以散列表是就是一个带有散列函数的数组。但是有一个问题:存储空间是有限的,可能给出的关键字是无限的,如果多个关键字在散列函数的映射下对应到同一个索引,该怎么处理呢?这是一个很重要的问题。
在有了上面的基本思想之后,要建立一个散列表,我们需要做以下的事情:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。