GATE CSE
First time here? Checkout the FAQ!
x
0 votes
48 views

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

  1. the list is empty or has exactly one element

  2. the elements in the list are sorted in non-decreasing order of data value

  3. the elements in the list are sorted in non-increasing order of data value

  4. 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 ?

asked in DS by Active (2k points)   | 48 views

1 Answer

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).

answered by Loyal (3.6k points)  
cn u draw diagram by taking simple example

plz

Related questions

0 votes
1 answer
1
0 votes
2 answers
2
asked ago in Databases by iamHarin (17 points)   | 17 views
0 votes
0 answers
3
asked in Operating System by Wanted Active (2k points)   | 39 views


Top Users Jul 2017
  1. Bikram

    5368 Points

  2. manu00x

    3092 Points

  3. Arjun

    1924 Points

  4. joshi_nitish

    1898 Points

  5. Debashish Deka

    1874 Points

  6. pawan kumarln

    1454 Points

  7. Tesla!

    1390 Points

  8. Hemant Parihar

    1314 Points

  9. Shubhanshu

    1136 Points

  10. Arnab Bhadra

    1124 Points


24,141 questions
31,143 answers
70,892 comments
29,467 users