您的位置:首页 > 其它

链表的排序——冒泡(交换数据与交换指针)

2016-11-20 23:08 183 查看
交换数值排序:

void sortList(Node * head, int len)
{
for(int i=0; i<len-1; i++)
{
Node * cur = head->next;

for(int j=0; j<len-1-i;j++)
{
if(cur->data > cur->next->data)
{
int tmp = cur->data;
cur->data = cur->next->data;
cur->next->data = tmp;
}
cur = cur->next;
}
}
}


交换指针排序:

void sortHeadByPtr(Node *head, int len)
{
Node * subHead ,*p,*q,*tmp;
int i,j;
for(i=0; i<len-1; i++)
{
subHead = head;
p = head->next;   //现在的指针序列:head--p--q
q = p->next;
for(j=0; j<len-1-i; j++)
{
if(p->data>q->data)
{
subHead->next = p->next;
p->next = q->next;
q->next = p;

tmp = p;
p = q; //当上面的交换完成后,最开始的变化为head--q--p
q = tmp;//那么后面的排序就会出错,这里的操作就是把指针换回来

}
subHead = subHead->next;//指针往后移动
p = p->next;
q = q->next;

}

}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐