排序之单链表插入排序

来源:互联网 发布:学软件开发工资待遇 编辑:程序博客网 时间:2024/06/16 06:06
//插入排序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;}

0 0
原创粉丝点击