/* Program 11-10

   Illustration of a function returning a pointer */

struct entry
{
 int          value;
 struct entry *next;
};

struct entry *find_entry (struct entry *pointer, int match_value)
 {
  while ( pointer != 0 )
   if ( pointer->value == match_value )
    return (pointer);
   else
    pointer = pointer->next;

  return (0);
 }

main ()
{
 struct entry n1, n2, n3;
 struct entry *list_pointer;

 n1.value = 100;
 n1.next = &n2;
 n2.value = 200;
 n2.next = &n3;
 n3.value = 300;
 n3.next = 0;

 list_pointer = find_entry (&n1, 200);
 if ( list_pointer != 0 )
  printf ("%d\n", list_pointer->value);
 else
  printf ("200 not found in list.\n");

 list_pointer = find_entry (&n1, 400);
 if ( list_pointer != 0 )
  printf ("%d\n", list_pointer->value);
 else
  printf ("400 not found in list.\n");
}


/* Program Output

200
400 not found in list.

*/
