考虑下面定义的函数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,函数f 返回 1 当且仅当 (GATE CS 2003)
(A)并非列表中的所有元素都具有相同的数据值。
(B)列表中的元素按数据值的非降序排列
(C)列表中的元素按数据值的非升序排列
(D)没有一个答案:(乙)
解释:
函数f() 的工作原理如下
1) 如果链表为空返回 1
2) Else 如果链表只有一个元素返回 1
3) 否则,如果 node->data 小于等于 node->next->data 并且同样的事情适用于列表的其余部分,则返回 1
4) 否则返回 0
这个问题的测验