我有这个,它检查元素是否在列表中,但是如何获取元素的索引?
// function that check if element is in list
int checklist(struct list *my_list, int n) {
while (my_list != NULL) {
if(my_list->info == n) return 1;
my_list = my_list->next;
}
return 0;
}
使用附加变量来记住当前索引:
int checklist (struct list *my_list,int n) {
int i=0;
while (my_list != NULL) {
if(my_list->info == n) return i;
my_list = my_list->next;
i++;
}
return -1;
}
或者
int checklist (struct list *my_list,int n) {
int i;
for (i=0;my_list != NULL; i++, my_list = my_list->next)
if(my_list->info == n) return i;
return -1;
}
顺便说一句,您的代码与递归无关,我认为它称为链表。
对带有您当前正在查看的索引的函数使用附加参数。尽管您需要一种方法来返回它:如果列表已用尽,则返回 -1,否则返回第一个找到的项目的索引。
PS我在这里看不到任何递归。