| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 490 人关注过本帖
标题:看不懂这个链表排序算法求解释
只看楼主 加入收藏
月下人静
Rank: 1
来 自:安徽宿州市
等 级:新手上路
帖 子:20
专家分:0
注 册:2010-1-30
结帖率:50%
收藏
 问题点数:0 回复次数:4 
看不懂这个链表排序算法求解释
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;                /*é¨ÃèÔ-μ¥á′±íóàÏÂμĽáμã*/
        }
    }
}
搜索更多相关主题的帖子: next 189 
2012-10-09 17:17
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
注释是挑什么语言干的
2012-10-09 18:44
月下人静
Rank: 1
来 自:安徽宿州市
等 级:新手上路
帖 子:20
专家分:0
注 册:2010-1-30
收藏
得分:0 
乱码了~这又影响?求大神解释...
2012-10-10 13:15
月下人静
Rank: 1
来 自:安徽宿州市
等 级:新手上路
帖 子:20
专家分:0
注 册:2010-1-30
收藏
得分:0 
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;
        }
    }
}

这是我自己写的排序,但是结果不对,就指点,本人菜鸟正在入门中
2012-10-10 13:16
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
你是想写个  比较链表相邻的元素  如果前一元素大于后一元素  就交换 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 编辑 ]

我要成为嘿嘿的黑客,替天行道
2012-10-10 20:51
快速回复:看不懂这个链表排序算法求解释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022578 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved