void choosetosort(NODE *pHead)
{
NODE *p, *ppre = pHead;// 待比较节点和待比较节点的前驱
NODE *t, *tpre;// 最小节点和最小节点的前驱
NODE *q;//移动的指针 找到最小值的节点与t交换
for (p = ppre->next; p->next;)// 外层循环
{
t = p;
for (q = p; q->next; q = q->next)//内存循环
{
if (q->next->data>p->data && q->next->data>t->data)//如果后面有值大于p的值且大于t的值(t的值如果被改变过)
{
tpre = q;
t = tpre->next;//t指向最小节点
}
}
if (t != p)
{
ppre->next = t;
ppre = t;
tpre->next = p;
tpre = p;
t = t->next;
p = p->next;
ppre->next = p;
tpre->next = t;
}
else//如果没有交换
{
ppre = ppre->next;
p = ppre->next;
}
}
}