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

plz

Related questions

0 votes
1 answer
1
0 votes
0 answers
2
asked ago in Operating System by Wanted Active (1.7k points)   | 21 views
0 votes
0 answers
3
asked in Digital Logic by Wanted Active (1.7k points)   | 21 views
Top Users Jan 2017
  1. Debashish Deka

    8280 Points

  2. sudsho

    5042 Points

  3. Habibkhan

    4716 Points

  4. Vijay Thakur

    4468 Points

  5. Bikram

    4368 Points

  6. saurabh rai

    4212 Points

  7. Arjun

    4052 Points

  8. santhoshdevulapally

    3732 Points

  9. GateSet

    3312 Points

  10. Sushant Gokhale

    3306 Points

Monthly Topper: Rs. 500 gift card

19,138 questions
24,046 answers
52,772 comments
20,283 users