考虑下面定义的函数f。
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))
);
}
对于给定的链表p,当且仅当(GATE CS 2003),函数f返回1。
(A)列表中并非所有元素都具有相同的数据值。
(B)列表中的元素按数据值的非降序排序
(C)列表中的元素以数据值的非递增顺序排序
(D)没有一个答案: (B)
解释:
函数f()的工作方式如下
1)如果链表为空则返回1
2)否则,如果链表只有一个元素,则返回1
3)否则,如果node-> data小于等于node-> next-> data,并且其余列表相同,则返回1
4)其他返回0
这个问题的测验