【发布时间】:2018-09-20 12:16:18
【问题描述】:
我想编写一个搜索函数,它可以递归地搜索一个或多个元素的数组:如果多个元素是“活动的”,它应该遍历它们;如果只有一个,只返回那个元素。 到目前为止我所拥有的是:
#include <stdio.h>
#define NUM 10
int GetNext(int curr);
typedef struct test_s {
int actv;
} test_t;
static test_t now[NUM] = {0};
int main(void)
{
int curr = 0;
now[1].actv = 1;
//now[2].actv = 1;
//now[5].actv = 1;
//now[9].actv = 1;
while (1)
{
curr = GetNext(curr);
printf("curr %d\n",curr);
sleep(1);
}
return 0;
}
int GetNext(int curr)
{
++curr; //increment index
if (curr==NUM){
curr = 0; //rollover
}
if (now[curr].actv ==1)
return curr;
else{
for (;curr<NUM;curr++)
if (now[curr].actv == 1)
return curr;
}
return -1;
}
现在,如果数组中有一个或多个活动元素,我不希望它返回 -1...但只在没有活动元素时返回 -1,否则它应该从 0 开始(在达到 NUM- 1)。我如何才能最好地做到这一点?
【问题讨论】:
-
不想回-1就不要
return -1;,还是我没看懂你的问题? -
你想返回/做什么而不是返回-1?
-
抱歉,我不清楚....我希望它在 0 处重新开始...并且只有在没有元素处于活动状态时才返回 -1
-
curr在 main 中未初始化 -
@smac89 你说得对,我修好了!