看不懂这个链表排序算法求解释
void sort(LinkList *&L){
LinkList *p=L->next,*q,*r;
if (p!=NULL) /*èôÔ-μ¥á′±íÖDóDò»¸ö»òòÔéÏμÄêy¾Y½áμã*/
{ r=p->next; /*r±£′æ*p½áμãoó¼ì½áμãμÄÖ¸Õë*/
p->next=NULL; /*11ÔìÖ»o¬ò»¸öêy¾Y½áμãμÄóDDò±í*/
p=r;
while (p!=NULL)
{ r=p->next; /*r±£′æ*p½áμãoó¼ì½áμãμÄÖ¸Õë*/
q=L;
while (q->next!=NULL && q->next->data<p->data)
q=q->next; /*ÔúóDDò±íÖDÕò2åèë*pμÄÇ°Çy½áμã*q*/
p->next=q->next; /*½«*p2åèëμ½*qÖ®oó*/
q->next=p;
p=r; /*é¨ÃèÔ-μ¥á′±íóàÏÂμĽáμã*/
}
}
}