首页 > 试题广场 >

请设计一个时间复杂度为O(n)的算法,删除表中所有数值西相同

[问答题]

假设以带头结点的单循环链表作非递减有序线性表的存储结构,请设计一个时间复杂度为O(n)的算法,删除表中所有数值西相同的多余元素,并释放结点空间。例如:(7,10,21,30,42,42,42,42,51,70),经算法操作后变为(7,10,21,30,42,51,70)。

typedef struct node
{
    int data;
    struct node *next;
} LinkList;
Delete_Eq(LinkList *head)
{
    LinkList *p, * q, * s;
    p = head;
    do
    {
        q = p->next;
        if(p->data = = q->data)
        {
            s = q;
            free(s);
            q = q->next;
        }
        else p = q;
    }
    while(p->next != head);
}

发表于 2019-07-04 16:03:43 回复(0)