如何打印從線性搜索多個搜索在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