交换数值排序:
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;
}
}
}