# 链表实现插入排序

226人阅读 评论(0)

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;
}
}

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：88669次
• 积分：3735
• 等级：
• 排名：第8960名
• 原创：295篇
• 转载：27篇
• 译文：0篇
• 评论：3条
评论排行
最新评论