//插入排序
LinkList* LinkList::Sorting()
{
LinkNode *p1 = phead->pnext;//前指针
LinkNode *p2 = p1->pnext;//当前指针
LinkNode *p=phead->pnext;//滚动指针
LinkNode *pp=phead;//滚动指针的前一个指针
LinkNode *q=phead->pnext;//始终指向第一个有效节点
for(int i=0;i<this->Length()-1;++i)
{
//首插
if(p2->data<q->data)
{
phead->pnext=p2;
p1->pnext=p2->pnext;
p2->pnext=q;
q=p2;//重置第一个有效节点
p2=p1->pnext;//保证p2为p1的后一个指针
//重置滚动指针
p=phead->pnext;//滚动指针
pp=phead;//滚动指针的前一个指针
}
else
{
//重置滚动指针
p=phead->pnext;//滚动指针
pp=phead;//滚动指针的前一个指针
while(p2->data>p->data&&p!=p2)
{
p=p->pnext;
pp=pp->pnext;
}
if(p==p2)
{
p1=p1->pnext;
p2=p2->pnext;
//重置滚动指针
p=phead->pnext;//滚动指针
pp=phead;//滚动指针的前一个指针
}
else
{
pp->pnext=p2;
p1->pnext=p2->pnext;
p2->pnext=p;
p2=p1->pnext;//保证p2为p1的后一个指针
//重置滚动指针
p=phead->pnext;//滚动指针
pp=phead;//滚动指针的前一个指针
}
}
}
return this;
}
排序之单链表插入排序
最新推荐文章于 2024-05-04 23:04:01 发布