этот код действителен для поиска элемента в односвязном списке? - PullRequest
0 голосов
/ 13 февраля 2011
int search( struct node **front, int val)
{
   struct node *cur;
     cur=*front;
   while(cur!=NULL)
   {
       cur=cur->next;
   }
   return  cur!=NULL;
}

Ответы [ 3 ]

3 голосов
/ 13 февраля 2011

Это всегда будет работать до конца списка, затем возвращается 0, так что нет. Вам нужно где-то сравнить с val.

Кроме того, передавать front как struct node ** необязательно, поскольку вы никогда не назначаете *front. Вместо этого передайте его как const struct node *.

Ваш код эквивалентен

int search(struct node **front, int val)
{
    return 0;
}

за исключением того, что он потерпит крах и сгорит, если ему будет передан NULL первый аргумент.

1 голос
/ 13 февраля 2011

Нет. Нигде в вашей логике вы не используете val. Попробуйте это -

int search( struct node *front, int val)
{
   while(front != NULL)
   {
        if( front->val == val ) // Assuming struct node has val member which you are trying to compare to
           return 1;  // found it

        front=front->next;
   }
   return 0;  // Not found
}
0 голосов
/ 13 февраля 2011

Где проводится сравнение с переменной val? Код не может проверить, присутствует ли узел со значением «val» в связанном списке.

...