如何打印从线性搜索多个搜索在C.线性搜索阵列
for (i=0; i < index; i++)
if (array[i] == target)
return i;
是否有可能返回不止一个值说,如果阵列具有等于目标的多个元素。
如何打印从线性搜索多个搜索在C.线性搜索阵列
for (i=0; i < index; i++)
if (array[i] == target)
return i;
是否有可能返回不止一个值说,如果阵列具有等于目标的多个元素。
而不是返回匹配的元素,你可以打印出他们的索引值(允许打印多个值)或将它们插入到数组中,然后返回它们。
你可能会在功能中分配一个动态数组的麻烦,但这可能更好留给调用者来管理。
我就从类似改变功能:
int findVal (int *array, int size, int val) {
for (int i = 0; i < size; i++)
if (array[i] == val)
return i;
return -1;
}
到一个允许您指定的起点(或者更准确地说,除了起点少一个):
int findVal (int *array, int size, int last, int val) {
for (int i = last + 1; i < size; i++)
if (array[i] == val)
return i;
return -1;
}
然后让你的客户端调用它:
int index = findVal (myarray, sizeof(myarray)/sizeof(*myarray), -1, myval);
while (index != -1) {
// Do something with index.
index = findVal (myarray, sizeof(myarray)/sizeof(*myarray), index, myval);
}
如果客户希望它在阵列中,他们可以把它放在一个数组中。但是,如果他们只是想做一些短暂的事情(就像打印索引然后忘记它),那么浪费数组就没有意义了。
+1:很好的回答...不遗余力:-) – 2011-03-01 04:07:57
所以我只是将返回值存储在一个数组中,然后用它作为索引打印出来? – 2011-03-01 03:48:33
你可以将每个匹配的'i'值追加到数组中,然后返回。或者,您可以打印出每个匹配的“i”值。 – 2011-03-01 03:50:28