| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5557 人关注过本帖
标题:链表排序问题
只看楼主 加入收藏
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
近来还好吧 老师
这个东西我还了解一点

链表是一个抽象数据类型
你可以这样连
struct node
{
  int m;
  int n;
}link[30];
用m来存结构数组的下标,n存数据元素

你也可以这样连
int n;
struct node
{
  int m;
 }*p;
p=(struct *)malloc(sizeof(struct node)*(n+1));
移动p来取数据元素

你还可以这样连

struct node
{
  int m;
  struct node *next;
}*q;

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-08-20 08:27
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
Knocker 出的题目
将1-8任意填入下列方格(中间格不填)
□ □ □
□ □ □
□ □ □

编程实现 填入的数字由小到大顺序排列

8 7 6
1   5
2 3 4

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-08-20 09:08
广陵绝唱
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
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
#include<stdio.h>
int a[9]={0,1,2,5,8,7,6,3};
int b[9];
int c[9];
int count=0;
main()
{
  int i,j,k,t;
  void print();
  clrscr();
  printf("Please enter original order of digits 1-8:");
  for(i=0;i<8;i++)
  {
    scanf("%d",&b[a[i]]);
  }
  printf("The sorting process is as felow:\n");
  print();
  for(t=-1,j=0;j<8&&t==-1;j++)
  {
    if(b[a[j]]==1)
      t=j;
  }
  for(j=0;j<8;j++)
  {
    c[j]=a[(j+t)%8];
  }
  for(i=2;i<9;i++)
  {
    for(j=i-1;j<8;j++)
    {
      if(b[c[j]]==i&&j!=i-1)
      {
    b[4]=i;
    b[c[j]]=0;
    print();
    for(k=j;k!=i-1;k--)
    {
      b[c[k]]=b[c[k-1]];
      b[c[k-1]]=0;
      print();
    }
    b[c[k]]=i;
    b[4]=0;
    print();
    break;
      }
      else if(b[c[j]]==i)
         break;
    }
  }
}

void print(void)
{
  int c;
  for(c=0;c<9;c++)
  {
    if(c%3==2)
      printf("%2d\n",b[c]);
    else
      printf("%2d",b[c]);
  }
  printf("--%2d--\n",count++);
}

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-08-27 20:34
mtyy8811
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-8-31
收藏
得分:0 
你们几个人的回的帖子让我大受启发啊!一个让我头疼半天的问题解决了~~~~~~~~
于是注册了这里~~呵呵
2008-08-31 15:36
正在链接站点
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2008-8-31
收藏
得分:0 
2008-08-31 16:33
醉罪
Rank: 2
等 级:论坛游民
帖 子:140
专家分:24
注 册:2008-7-26
收藏
得分:0 
在显示器上看代码  真的好累哦~~~
2008-08-31 21:11
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
[bo][un]flyue[/un] 在 2008-8-16 20:14 的发言:[/bo]

这个是去年打算用来做游戏的链表,不过现在存连续的数据已经改用STL了。
主要是不想搞的自己太麻烦,有什么好用的就用,未必需要自己写


链表为什么需要排序呢?一般都是作临时数组或者大数据的堆栈使用的,就算排序也没办法使用二分嘛……

如果需要顺序输出,还不如用堆或者查找树,反正也是动态分配的。

总的来说想不通链表怎么有必要作排序工作。

不过呢,n2的方法还是有的,如果要lgn的话,我想想……写一个归并排序还是有可能的,不过估计必须需要技巧……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-01 11:02
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
SW```你的链表归并排序代码能让我看看吗?(不能用递归)
2008-09-01 18:01
寒秋
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-4-19
收藏
得分:0 
2008-09-02 11:23
快速回复:链表排序问题
数据加载中...
 
   



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

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