我有一个C编程课的作业,我们使用链接列表。
一个函数获取根指针和Id,并在列表中搜索以删除它。我已根据这些ID对链接列表进行了排序。
有没有办法有效地搜索链表而不进行线性搜索?该任务暗示他们是一个更好的方式,但我想不出一种方法来做到这一点,而不是非常低效或只是使用线性搜索。
答案 0 :(得分:1)
链表中的每个节点只包含指向下一个节点(以及可选的前一个节点)的指针,因此没有任何其他结构,搜索列表的唯一方法是线性的。
但是,由于您对列表进行排序,因此可以在该过程中构建二叉树。然后,您可以使用该树搜索时间复杂度为O(log n)
而不是O(n)
的列表。