始终把com当作最小的节点,如果遇到更小的be,那就交换节点位置,再交换节点名称。
这是我排序的思想。
但是我编写的代码存在很大的问题,我花了很长时间也没解决。
请大佬们帮我看看。
void sort(ST head)
{
ST pre, com, be, yy;
ST n = NULL;
pre = head;
for (yy = head->next, com = head->next; com != n && yy != n; com = com->next,pre = pre->next,yy = yy->next )
{
if (com->next == n && yy->next == n)
{
return;
}
for (be = com->next; be != n && yy != n; be = be->next,yy = yy->next )
{
if (be == n && yy == n)
{
return;
}
if (com->num > be->num)
{
if (com->next = be)
{
pre->next = be;
com->next = be->next;
be->next = com;
ST t = com;
com = be;
be = t;
}
else
{
ST a = be->next;
pre->next = be;
be->next = com->next;
com->next = a;
yy->next = com;
ST w = com;
com = be;
be = w;
}
}
}
yy = com;
}
}