1

我有这个,它检查元素是否在列表中,但是如何获取元素的索引?

// 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;
}
4

2 回答 2

2

使用附加变量来记住当前索引:

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; 
}

顺便说一句,您的代码与递归无关,我认为它称为链表。

于 2012-12-06T13:58:49.497 回答
1

对带有您当前正在查看的索引的函数使用附加参数。尽管您需要一种方法来返回它:如果列表已用尽,则返回 -1,否则返回第一个找到的项目的索引。

PS我在这里看不到任何递归。

于 2012-12-06T13:45:45.527 回答