1 1 vote 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 the list is empty or has exactly one element the elements in the list are sorted in non-decreasing order of data value the elements in the list are sorted in non-increasing order of data value not all elements in the list have the same data value I m not getting it ,there is no return 1 statment so how thiz will right ? Data Structures + – Wanted 1.2k views answer comment Share Follow Print 0 reply Please log in or register to add a comment.
0 0 votes Option B) return ((p == NULL) || (p->next == NULL)|| ((p->data <= p ->next -> data) && f(p->next))). Look at the return condition carefully. F will return true only if the value of all successive nodes are greater than the previous node. If there are no nodes or if there is only one node even then this function will return true. Hence the OR conditions (p == NULL) || (p->next == NULL). Kaushik.P.E answered Jan 8, 2017 Kaushik.P.E comment Share Follow See all 2 Comments 2 2 Comments reply Wanted commented Jan 8, 2017 reply Follow flag cn u draw diagram by taking simple example plz –1 –1 replyShare ankit6271 commented Nov 10, 2021 reply Follow flag Why not option a it also goes with the question asked. 0 0 replyShare Please log in or register to add a comment.