设单链表以非递减有序排列,设计算法实现在单链表中删除值相同的多余结点

先对链表进行排序在删除数相等的结点:

已知单链表的无头节点head

void sortDel()                              //排序+删除
{
    pStu p, q, temp1;
    int temp;
    p = head;
    for( p ; NULL != p->Next ; p = p->Next )
    {
        for( q = p->Next ; NULL != q->Next ; q = q->Next)
        {
            if( p->Next->a > q->Next->a )
            {
                temp = p->Next->a;
                p->Next->a = q->Next->a;
                q->Next->a = temp;
            }
        }

    }

/************以上是排序,下面是去重**********************/
    p = head->next;
    q = p->next;
    while(NULL != q)
    {
        if(p->a == q->a)
        {
            temp1 = q;
            p->next = q->next;
            q = q->next;
            delete(temp1);
        }
        else
        {
            q = q->next;
            p = p->next;
        }
        
    }
}




你可能感兴趣的:(算法与数据结构-数据结构与算法)