考虑下面的“ C”代码片段,它从整数的有序列表中删除重复项。
Node *remove-duplicates(Node *head, int *j)
{
Node *t1, *t2;
*j=0;
t1 = head;
if (t1! = NULL) t2 = t1 →next;
else return head;
*j = 1;
if(t2 == NULL)
return head;
while t2 != NULL)
{
if (t1.val != t2.val) --------------------------→ (S1)
{
(*j)++; t1 -> next = t2; t1 = t2: ----------→ (S2)
}
t2 = t2 →next;
}
t1 →next = NULL;
return head;
}
假设在以下问题中列表包含n个元素(n≥2)。
一种)。语句S1中的比较进行了多少次?
b)。标记为S2的语句执行的最小次数和最大次数是多少?
C)。函数完成时, j指向的整数中的值的意义是什么?回答:
解释:
- (一种)。 n-1次,因为对n个元素进行比较是成对的。
- (b)。最大值:所有不同元素的n-1,最小值:所有相同元素的0。
- (C)。 j在列表中保留不同节点的数量。
这个问题的测验