数据结构单链表递增排序

有一个带头结点的单链表L,设计一个算法使其元素递增有序。

void Sort(LinkList &L){
LNode *p,*r;
while (L->next != Null){
p=L->next;
while (p->next != Null){
r = p->next;
s = p->data;
if(s > r->data)
p->data = r->data;
r->data = s;
p = r;
}
}
}
以上是我写的,和答案的方法不一样,不知道这样对不对

这是冒泡排序?不管怎样p = L->next;会导致该算法无限循环

你这根本就不能运行啊,p只是定义了指针,没有赋值,一循环就会崩溃的
在while之前,应该 p = &L;