📜  门| GATE CS 1997 |第62章

📅  最后修改于: 2021-06-30 01:48:16             🧑  作者: Mango

考虑下面的“ 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在列表中保留不同节点的数量。

这个问题的测验