word* link_sort_by_cnt(word* head)
{
word* pcur,*ppre,*pwork,*pnext;
if(head==NULL||head->next==NULL)
return head;
pwork=head;//head=NULL
while(pwork)
{
pnext=pwork->next;
pwork->next=NULL;
pcur=head;
ppre=NULL;
while(pcur){
if(pcur->cnt<pwork->cnt){
ppre=pcur;
pcur=pcur->next;
}else{
break;
}
}
if(ppre==NULL){
pwork->next=pcur;
head=pwork;
}else{
ppre->next=pwork;
pwork->next=pcur;
}
pwork=pnext;
}
return head;
}
//word* link_sort_by_cnt(word* phead)
{
word* pCur, *pPre,* pNext,*pWork ;
pWork = phead ;
phead = NULL ;
while(pWork)
{
pNext = pWork ->next ;
pCur = phead ;
pPre = NULL;
while(pCur)
{
if(pWork ->cnt < pCur ->cnt)
{
pPre = pCur ;
pCur = pCur ->next ;
}else
{
break ;
}
}
if(pPre == NULL)
{
pWork ->next = pCur ;
phead = pWork ;
}else
{
pPre ->next = pWork ;
pWork ->next = pCur ;
}
pWork = pNext ;
}
return phead;
}
//自己的版本 新建头结点,把原来的链表断开,把原链表的节点安装到新的链表(原节点)上
word* link_sort_by_cnt(word* phead)
{
word* nh=NULL;
word* pwork=phead;
word* pcur;
word* pnext;
word* pre;
while(pwork)
{
pnext=pwork->next;
pcur=nh;
pre=NULL;
while(pcur)
{
if(pcur->cnt<pwork->cnt)
{
pre=pcur;
pcur=pcur->next;
}else
break;
}
if(pre==NULL)
{
pwork->next=pcur;
nh=pwork;
}else
{
pre->next=pwork;
pwork->next=pcur;
}
pwork=pnext;
}
}
链表实现插入排序
最新推荐文章于 2021-04-20 23:01:52 发布