2012-12-06 4 views
1

나는 이것을 가지고, 그것이 목록에 있는지 아닌지를 검사하지만 요소의 색인을 얻는 방법은 무엇입니까?재귀를 사용하여 C에서 요소 색인을 찾는 방법

// 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; 
} 
+0

이 난 하나 – unknown

+0

INT 점검표 (구조체 목록 *을 my_list, INT 않음) { 동안 다른 포스터 실수 코드는 { 경우 (my_list-> 정보 == N) 창 1 (을 my_list = NULL!); my_list = my_list-> next; } return 0; } – unknown

+4

정확한 코드가 포함되도록 질문을 수정하십시오. – dutt

답변

1

현재보고있는 색인을 포함하는 함수에 대한 추가 인수를 사용하십시오. 그것을 반환하는 방법이 필요하지만 목록이 고갈 된 경우 -1을 반환하고 그렇지 않으면 첫 번째 발견 된 항목의 인덱스를 반환합니다.

P. 나는 어떤 재귀도 여기에서 보지 않는다. 코드는 재귀와는 아무 상관이 없습니다 그런데

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

, 난 그 전화 연결리스트를 생각 :

2

를 사용하여 추가 변수는 현재 인덱스를 기억합니다.

+0

덕분에 많이 :) – unknown

+0

커뮤니티의 다른 구성원이이 문제가 이미 해결되었음을 알 수있을 정도로 충분한 경우 문제의 답을 하나만 붙이면됩니다. – Kyborek

관련 문제