| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 1191 人关注过本帖
标题:链表排序问题
收藏  订阅  推荐  打印 
liyanhong
Rank: 3Rank: 3
来自:水星
等级:中级会员
威望:8
帖子:1834
积分:4299
注册:2008-5-3
近来还好吧 老师

这个东西我还了解一点

链表是一个抽象数据类型
你可以这样连
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;

专克火星娃  ——liyanhong
2008-8-20 08:27
liyanhong
Rank: 3Rank: 3
来自:水星
等级:中级会员
威望:8
帖子:1834
积分:4299
注册:2008-5-3
Knocker 出的题目

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

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

8 7 6
1   5
2 3 4

专克火星娃  ——liyanhong
2008-8-20 09:08
广陵绝唱
Rank: 4
等级:高级会员
威望:1
帖子:825
积分:9718
注册:2008-2-15


程序代码:
/*******************************************************************************

        将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-8-20 14:29
liyanhong
Rank: 3Rank: 3
来自:水星
等级:中级会员
威望:8
帖子:1834
积分:4299
注册:2008-5-3

#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++);
}

专克火星娃  ——liyanhong
2008-8-27 20:34
mtyy8811
Rank: 1
等级:新手上路
帖子:1
积分:110
注册:2008-8-31

你们几个人的回的帖子让我大受启发啊!一个让我头疼半天的问题解决了~~~~~~~~
于是注册了这里~~呵呵
2008-8-31 15:36
正在链接站点
Rank: 1
等级:新手上路
帖子:34
积分:376
注册:2008-8-31

2008-8-31 16:33
醉罪
Rank: 2
等级:注册会员
帖子:59
积分:744
注册:2008-7-26

在显示器上看代码  真的好累哦~~~
2008-8-31 21:11
StarWing83
Rank: 12Rank: 12Rank: 12
来自:湖北工业大学
等级:版主
威望:9
帖子:2483
积分:26219
注册:2007-11-16

flyue 在 2008-8-16 20:14 的发言:

这个是去年打算用来做游戏的链表,不过现在存连续的数据已经改用STL了。
主要是不想搞的自己太麻烦,有什么好用的就用,未必需要自己写
链表为什么需要排序呢?一般都是作临时数组或者大数据的堆栈使用的,就算排序也没办法使用二分嘛……

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

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

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

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-9-1 11:02
smltq
Rank: 3Rank: 3
等级:中级会员
威望:2
帖子:333
积分:4018
注册:2008-1-21

SW```你的链表归并排序代码能让我看看吗?(不能用递归)
2008-9-1 18:01
寒秋
Rank: 1
等级:新手上路
帖子:28
积分:402
注册:2008-4-19

[tk03] [tk03] [tk03] [tk03] [tk03] [tk03] [tk03] [tk03] [tk03] [tk03] [tk03] [tk03] [tk03] [tk03] [tk03] [tk03] [tk03]
2008-9-2 11:23
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.071409 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved