【发布时间】:2010-10-13 03:57:46
【问题描述】:
我目前有一个简单的数据库程序,它从文本文件中读取键并将它们存储在双向链表中(如果需要,稍后会读取值)。目前,我对列表进行了顺序搜索,但这显然相当慢。我希望有另一种方法可以做。我正在阅读二叉树(特别是红黑树),但我对它们了解不多,并希望我能从 stackoverflow hivemind 中看到一些东西:) 我想我的问题是,最快的方法是什么在双向链表中进行搜索?
编辑:忘了说列表是排序的。不知道这是否会改变什么。另外,我只在keys中读取的原因是最大值长度为1024 * 32字节,我觉得太大了。请注意,这是针对分配的,因此“典型使用场景”不适用。教授们可能会对这件事进行压力测试,我不想分配那么大的块。
【问题讨论】:
-
二叉树和链表是不同的数据结构(链表是树的退化形式)。所以你必须考虑你是否愿意改变结构。
-
注意两次读取文本文件的性能开销;在读取密钥时读取和保存值可能会更好。文件是 slow* 并且内存通常很便宜。
-
一个快速的解决方法是,使用哈希映射来存储列表节点的指针对键:-)
标签: c search linked-list