为什么要搜索链表?

时间:2013-04-03 02:57:13

标签: algorithm list data-structures

我正在阅读“算法设计手册”,它说基本列表上的三个操作是搜索插入删除 。然后它继续描述C中的算法,一旦找到它正在寻找的节点(通过比较节点的数据与搜索到的节点),它就返回该节点(从而返回其下连接的任何节点)。如果找不到它想要的内容,则会返回NULL

所以我的问题是,如果我们知道我们在寻找什么,我们为什么要搜索它?如果原因只是看它是否包含在列表中,那么为什么布尔函数不是“包含”我们真正想要的东西呢?

6 个答案:

答案 0 :(得分:2)

节点可能包含的信息不仅仅是您要搜索的值。想象一下为文件系统建模的列表。您按名称搜索文件,但您获取的节点可能包含文件名,文件大小,上次修改时间,文件所有者,访问权限和其他数据。

答案 1 :(得分:1)

通常,人们会搜索节点以对其执行某些操作。也许您希望将新值设置到现有节点中,删除节点后的所有内容,或者在该节点之后插入一些内容。如果在列表中维护某个顺序,则可以扩展搜索功能的语义,以查找大于某个值的第一个项目,等等。

答案 2 :(得分:0)

有时,您需要某个特定节点进行某些操作。请记住,节点本身及其内容是两个不同的逻辑实体。

答案 3 :(得分:0)

布尔函数“包含”可能就是我们想要的。如果我们想要搜索一些我们没有的数据集但我们确实有一个识别号码会怎么样?

尝试将教科书中的示例作为一般示例。搜索布尔值并根据其他值搜索记录都执行相同的操作,只是输出不同。

答案 4 :(得分:0)

考虑一个简单的例子......

你写了一个程序,询问人们的年龄(以年为单位)并将它们存储在一个列表中然后显示一个直方图(每个年龄段有多少人)或者它可能显示有多少人已经年满21岁过去的一年。

在这样的程序中,您可能事先不知道列表中最终会出现什么。这就是你搜索它的原因。

答案 5 :(得分:0)

链接列表结构的唯一入口是head节点。要到达列表中的特定节点,您必须遍历head节点到下一个节点,到下一个节点,...最后到目标节点,从而进行搜索。因此contains将完全相同 - 搜索equals到您要查找的节点的节点。