注册 登录
编程论坛 数据结构与算法

看不懂这个链表排序算法求解释

月下人静 发布于 2012-10-09 17:17, 496 次点击
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;                /*é¨ÃèÔ-μ¥á′±íóàÏÂμĽáμã*/
        }
    }
}
4 回复
#2
寒风中的细雨2012-10-09 18:44
注释是挑什么语言干的
#3
月下人静2012-10-10 13:15
乱码了~这又影响?求大神解释...
#4
月下人静2012-10-10 13:16
void sort(LinkList *&L)
{
    LinkList *pslow, *pfast;
    pfast=L->next;
    while(pfast!=NULL)
    {
        pslow=L;
        pfast=pfast->next;
        pslow=pslow->next;
        while(pslow!=pfast)
        {            
            if(pslow->data>pfast->data)
            {
                ElemType save;
                save=pslow->data;
                pslow->data=pfast->data;
                pfast->data=save;
            }
            pslow=pslow->next;
        }
    }
}

这是我自己写的排序,但是结果不对,就指点,本人菜鸟正在入门中
#5
zhu2240392012-10-10 20:51
你是想写个  比较链表相邻的元素  如果前一元素大于后一元素  就交换 date的值的  这么一直的比下去 直到链表结束 是么
但是你这个循环体  有问题
void sort(LinkList *&L)
{
    LinkList *pslow, *pfast;
    pfast=L->next;
    while(pfast!=NULL)
    {
        pslow=L;       --------------》每次循环过后pslow 这个结构指针 指向的是链表L的首地址   也就是说 你的程序一直都是在和链表的第二个元素             在                      进                                                         行比较
        pfast=pfast->next;
        pslow=pslow->next;
        while(pslow!=pfast)
        {            
            if(pslow->data>pfast->data)
            {
                ElemType save;         ----------------》  这个语句 不清楚你要表达的是什么 C语言的程序体除了申明部分外  其余的都是变量,逻辑运算符,关系运算符 函数调用 等等来组合成语句的 。你这个语句是编译不过去的。感情请问您是真的自己写的程序么
                save=pslow->data;
                pslow->data=pfast->data;
                pfast->data=save;
            }
            pslow=pslow->next; -----》    pslow=L 这个语句 会导致你这个程序语句执行了,但是没有实际效果
        }
    }
}


[ 本帖最后由 zhu224039 于 2012-10-10 20:53 编辑 ]
1