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 に答える