你好问下:设计在单链表中删除值相同的多余结点的算法。怎么做啊?

如题所述

第1个回答  2015-01-20
遍历链表,如果当前结点的值在之前的结点中出现过,那么删除当前结点追问

那算法是怎么样的啊?

追答大概类似这样:
void unique(List *li)
{
    Node *head, *p, *q;
    head = p = li->head;
    while (p->next != NULL)
    {
        q = head;
        while (q != p->next)
        {
            if (p->next->data == q->data)
            {
                q = p->next;
                p->next = q->next;
                free(q);
                break;
            }
            q = q->next;
        }
        p = p->next;
    }
}

本回答被提问者和网友采纳
第2个回答  2017-11-09
这么写的前提是链表数据有序排列,如果出现1,2,1等类似情况就实现不了了,可以先对链表数据进行排序操作。
相似回答