GATE CSE
First time here? Checkout the FAQ!
x
0 votes
53 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)   | 53 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.7k points)  
cn u draw diagram by taking simple example

plz

Related questions

0 votes
1 answer
1
0 votes
0 answers
2
asked in Digital Logic by hem chandra joshi Active (2k points)   | 23 views
0 votes
1 answer
3


Top Users Sep 2017
  1. Habibkhan

    7838 Points

  2. Warrior

    2812 Points

  3. Arjun

    2696 Points

  4. rishu_darkshadow

    2692 Points

  5. A_i_$_h

    2456 Points

  6. manu00x

    2040 Points

  7. nikunj

    1980 Points

  8. Bikram

    1864 Points

  9. makhdoom ghaya

    1790 Points

  10. SiddharthMahapatra

    1718 Points


26,243 questions
33,815 answers
80,261 comments
31,168 users