📜  门|门 CS 1997 |第 62 题

📅  最后修改于: 2021-09-27 05:51:33             🧑  作者: 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 保持列表中不同节点的计数。

这个问题的测验