| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5557 人关注过本帖
标题:链表排序问题
取消只看楼主 加入收藏
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
结帖率:94.74%
收藏
 问题点数:0 回复次数:4 
链表排序问题
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    最近一直断断续续地在学习着链表,链表的插入数据一般都要用到排序。在网上搜了几个链表排序的代码,不甚明了,也未能释疑。哪位仁兄能略微详细——或者是通俗一些地讲解一下?最好能帖上个链表排序的函数代码上来,不胜感激。谢谢。
搜索更多相关主题的帖子: 链表 函数 仁兄 代码 数据 
2008-08-16 16:48
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
别的没学过,也没学到,是单链表,就是最初级的。

如:
struct ST
{
        char c;
        struct ST *next;
}*p,*pr,*head;

[[it] 本帖最后由 广陵绝唱 于 2008-8-16 19:57 编辑 [/it]]
2008-08-16 19:56
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
我实在是愚钝得很,现在连什么是双链都不清楚。不过这位仁兄如果有空,请把代码发上来,我学习学习,谢谢。

PS:记得链表排序,好象是应该再在链表最后再加一个链,作为临时交换用链,是这样吗?

再PS:忘说谢谢了,谢谢两位。
2008-08-16 20:04
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
谢谢祭雪朋友。再问个问题(我还没看代码):双链和单链输出的效果是一样的么?

PS:为了生计,每天疲于奔命,虽自学很长时间,但进程缓慢,有时一耽误就是好几天学不成。虽进展缓慢,但由于没有考试等方面的压力,还算是自得其乐。C语言是我业余的爱好,我现在的收入应该比一般的程序员要多,我学它,算是一种乐趣吧。
2008-08-16 20:20
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*******************************************************************************

        将1-8任意填入下列方格(中间格不填)
        □ □ □
        □ □ □
        □ □ □

        编程实现 填入的数字由小到大顺序排列
        如
        8 7 6
        1   5
        2 3 4

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        暂时想不出更好的办法,所以就用最原始的办法来解决。还请各位多多包涵。

*******************************************************************************/
#include<stdio.h>
int main(void)
{
        int i,j,k;
        int a[16]={8,7,6,5,4,3,2,1,8,7,6,5,4,3,2,1};
        int b[8];
        int c[10];
        printf("请输入1~8任意数字,0退出:\n");
        while(9)
        {
            scanf("%d",&k);
            if(k==0)       break;
            system("cls");
            for(i=0;i<16;i++)
                if(k==a[i]) { k=i;  break;}
            for(j=0;j<8;j++)
                    b[j]=a[j+k];
            for(i=0;i<3;i++)
                c[i+1]=b[i];
            c[4]=b[7]; c[6]=b[3]; c[7]=b[6];
            c[8]=b[5]; c[9]=b[4];
            for(i=1;i<10;i++)
            {
                if(i==5)
                {   printf("  ");
                    i++;
                }
                printf("%2d",c[i]);
                if(i%3==0)    printf("\n");
            }
            printf("请输入1~8任意数字,0退出:\n");
        }
}


                
2008-08-20 14:29
快速回复:链表排序问题
数据加载中...
 
   



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

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