《Programming Pearls,编程珠玑》15章关键词:字符串,散列表,平衡树,后缀数组,库,组件。
散列表是一种数据结构。可用散列表中的元素唯一地指向另一种数据结构。如编程珠玑介绍的用散列表元素指向存储了“单词和单词数”的结构体,单词从输入流(一篇文章,一本书)中得来。可以将每次从输入流中读到的数据存储在栈和堆中。
Figure1:散列表和存储数据的数据结构
如上图,用散列表元素指向结构体的方便之处在于不管数据存储在哪里,都可以通过散列表元素将其访问到。散列表的存在是为了更好的管理存储数据的数据结构。我们希望通过散列表能够更好的访问存储数据的数据结构。如统计输入流中的不同单词,并统计每个单词的数目。为了实现这个目标,涉及到两个问题:
-
如何将新读入的单词保存到一个从未指向任何数据结构的散列表元素。
-
如果采用随机的方法,如和保证将每个不同的单词都得到存储并且对每个单词的计数准确无误。
存储输入数据的数据结构可以是如下结构:
struct _word{ char *word; int count; }word; |
所以散列表就是此种数据类型:struct _word *pword[SIZE];。SIZE