插入排序的链表,无头结点

void insertLinkSort(link header)

{//插入排序的链表,无头结点

   link t,u,p,headerB =NULL;

   link headerA;

   for (headerA = header;headerA !=NULL;headerA = u)

    {

        p =NULL;

        u = headerA->next;//


       for (t = headerB;t !=NULL; t = t->next)

        {

           

           if (t->data > headerA->data)

            {

               break;

            }

            p = t;

        }

        headerA->next = t;

       if (p)

        {

            p->next = headerA;

        }

       else

        {

            headerB = headerA;

        }

        

    }

}

/*这个插入排序过程中,有一点要注意,就是当把这个节点指示其他节点时,之前的指向自动断开。*/
// 插入排序的链表,无头结点这是第二种方法实现如下:

PNode insertLink(PNode header)

{//插入排序的链表,无头结点

    PNode u;

    PNode  headerA = NULL;    

    for (PNode p = header;p;p = u)

    {

        u = p->next;

        PNode x = headerA;

        PNode temp = NULL;

        for (;x;x = x->next)

        {

            if (x->data > p->data)

            {

                break;

            }

            temp = x;

        }

        

        if (!temp&&!x)

        {

            headerA = header;

            headerA->next = NULL;

        }

        else

        {

            if (!temp)

            {//头插入

                p->next = x;

                headerA = p;

            }

            

            if (temp)

            {//中间插入

                p->next = x;

                temp->next = p;

            }

            

            if(!x)

            {//尾部插入

                p->next = temp->next;

                temp->next = p;

            }

           

        }

    }

    return headerA;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值