【发布时间】:2019-03-26 15:17:42
【问题描述】:
我正在对已排序的双向链表(包含一堆整数 ID)进行线性搜索。为此,我使用分配给 head 的临时指针(保存 dbl 的第一个值),并继续处理下一个指针,直到找到请求的 ID。
为了缩短搜索时间,我可以将另一个指针分配给尾部(保存最后一个值的指针)并与前一个指针一起向后进行
我的线性搜索实现
struct node* find(long int value) {
struct node*temp = head, *temp1 = tail;
while(temp->id < value && temp1->id > value){
temp = temp->next;
temp1 = temp1->prev;
}
if(temp->id == value)
return temp;
else if(temp1->id == value)
return temp1;
else
return NULL;
}
这里 temp1 继续向后移动,只有在 temp 向前移动之后
我的问题:
有什么方法可以同时移动向前(temp) 和向后(temp1) 指针?
[我的意思是同时移动两个指针,甚至减少comaprision的时间]
关键词:排序双向链表,C语言
【问题讨论】:
-
你听说过多线程吗?
-
否,除非语言允许并行,并且执行并行操作不会花费更长的时间,而不是按顺序执行两个步骤。
-
@PSkocik 我是这个概念的新手。很想学习它
-
@jdweng 我用的是c语言
-
为什么不拥有指向所有节点的指针并同时检查它们?
标签: c