这段代码什么意思?下面链表看不太懂

void Sort(chepiao *start)
{
    chepiao* L;      //用于链表排序的交换步骤
    chepiao* M;     //用于
    chepiao* N;     //用于
    int i,j;          //用于排序
    L=start;
    M=start->left;
    N=M->left;
    for(i=0;i<sum-2;i++)
    {
        for(j=0;j<sum-1-i;j++)
        {
            
            if(((M->FCSJh*60)+M->FCSJm)>((N->FCSJh*60)+N->FCSJm))
            {
                if(N->left!=NULL)
                {
                    L->left=N;
                    M->left=N->left;
                    N->left=M;
                    L=N;
                    M=L->left;
                    N=M->left;
                }
                else
                {
                    L->left=N;
                    N->left=M;
                    M->left=NULL;
                    continue;
                }
            }
                else
            {
                    if(N->left!=NULL)
                {
                    L=M;
                    M=L->left;
                    N=M->left;
                }
                else
                {
                    continue;
                }
            }
        }
        L=start;
        M=L->left;
        N=M->left;
    }
}