Consider the function f defined below.

struct item { int data; struct item * next; }; int f(struct item *p) { return ( (p == NULL) || (p->next == NULL) || (( P->data <= p->next->data) && f(p->next)) ); } |

For a given linked list p, the function f returns 1 if and only if

A | the list is empty or has exactly one element |

B | the elements in the list are sorted in non-decreasing order of data value |

C | the elements in the list are sorted in non-increasing order of data value |

D | not all elements in the list have the same data value. |