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

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

已知单链表的无头节点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;
        }
        
    }
}




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值