C语言单链表:这是一个将链表元素进行升序排列的函数,算法是我自己想出来的,具体的思路是:创建一个新链表,找到原链表中数据域最小的结点插入新链表中,再在原链表中将该结点删除。重复上述步骤,直到原链表为空则停止操作,此时的新链表为升序排列的链表。但将这个思路转化为程序时,不知道哪错了。请各位小伙伴帮忙看看,谢谢!
```c
void sort(polynomial* L)//排序函数
{
polynomial* NewL = (polynomial*)malloc(sizeof(polynomial));
polynomial* np = NewL;
polynomial* r = NULL;
polynomial* s = NULL;
while (1)
{
polynomial* q = L;
polynomial* p = L->next;
if (!p)
break;
double min = p->coef;
r = q;
s = p;
while (p)//找到多项式中系数最小的项
{
if (p->coef < min)
{
min = p->coef;
r = q;
s = p;
}
p = p->next;
q = q->next;
}
r->next = s->next;//将链表中系数最小的项删除
np->next = s;//将链表中系数最小的项插入新链表的表尾
np = np->next;//将新链表的尾指针后移一位
}
np->next = NULL;
L = NewL;
}
```